2010-11-15 26 views
1

我在地图上显示标记。我不知道如何为不同的标记指定不同的可绘制资源?如何在地图上显示不同的标记?

我想显示一个绿色的针,如果位置距离< 50,等等,等等

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 
      } 

回答

1

第1步:创建您自己的子类OverlayItem

第2步:覆盖getMarker()和返回你想要的图像

Here is a sample project证明了这一点。

+0

@CommonsWare,有关扩展ItemizedOverlay什么?你会不会因为任何原因而推荐这条路线? – McStretch 2010-11-15 21:52:52

+0

@McStretch:你可以重载'onDraw()'。然而,恕我直言,它似乎更有意义的一个'OverlayItem'具有业务逻辑的图标使用,而不是'ItemizedOverlay'必须有所有这些规则。但是,这是基于有限的设计信息,所以在这种情况下,我的直觉本能可能是错误的。 – CommonsWare 2010-11-15 22:09:34

+0

为什么我不能调用overlayItem.setMarker(drawable)? //不工作顺便说一句 – 2010-11-15 23:18:10

3

我发现了setMarker法正常工作解决方案:

Drawable drawable = getResources().getDrawable(R.drawable....); 
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 
overlayItem.setMarker(drawable); 
相关问题