1

J'affiche des marqueurs sur une carte. Je ne suis pas sûr comment je peux spécifier une ressource drawable différente pour différents marqueurs?Comment afficher différents marqueurs sur une carte?

Je voudrais montrer une épingle verte si les emplacements la distance < 50, etc., etc.

pin = getResources().getDrawable(R.drawable.pushpin); 
     itemizedOverlay = new MyItemizedOverlay(pin, mapView); 

     for (Record element : list) { 
      GeoPoint point; 
      OverlayItem overlayItem; 

      double lat = Double.parseDouble(element.getLatitude()); 
      double lng = Double.parseDouble(element.getLongitude()); 
      double locationDistance = Double.parseDouble(element.getLocationDist()); 

      geoPoint.add(new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6))); 
      listOfOverlays = mapView.getOverlays(); 
      point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
      Log.i("deep", "deep " + point); 

      overlayItem = new OverlayItem(point, "", element.getTitle()); 
      if(locationDistance < 50){ 
       //green 
      } 
      else if(locationDistance > 50 && locationDistance < 100){ 
       //yellow 
      } 
      else if(locationDistance > 100 && locationDistance < 150){ 
       //blue 
      } 

Répondre

1

Étape # 1: Créer votre propre sous-classe de OverlayItem

Étape # 2: Remplacer getMarker() et renvoie l'image que vous voulez

Here is a sample project en faisant la démonstration.

+0

@CommonsWare, qu'en étendant ItemizedOverlay? Ne recommanderiez-vous pas d'emprunter cette route pour quelque raison que ce soit? – McStretch

+0

@McStretch: Vous pouvez remplacer 'onDraw()'. Cependant, à mon humble avis, il semblerait plus logique pour un 'OverlayItem' d'avoir la logique métier pour quelle icône il utilise, plutôt que d'avoir' ItemizedOverlay' doivent avoir toutes ces règles. Mais, cela est basé sur des informations de conception limitées, et donc mon instinct peut-être tort dans ce cas. – CommonsWare

+0

Pourquoi ne puis-je pas appeler overlayItem.setMarker (drawable)? // ne fonctionne pas btw –

3

J'ai trouvé la solution pour la méthode setMarker pour fonctionner correctement:

Drawable drawable = getResources().getDrawable(R.drawable....); 
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 
overlayItem.setMarker(drawable); 
Questions connexes