文本标注与地物标绘 |
支持对地图添加文本标注和在线绘制并添加几何地物等,可以通过mapView类的getOverlays()、getOverlayByKey(java.lang.String key)两个方法向地图添加覆盖物,并通过Overlay来定义和实现这些覆盖物。
文本标注可以通过OverlayItem 构建,然后通过overlay.addItem() 添加,再通过mapView.getOverlays().add(overlay)添加到地图上。
// 为首都及省会城市增加标注 Drawable drawableBlue = getResources().getDrawable(R.drawable.blue_pin); DefaultItemizedOverlay overlay = new DefaultItemizedOverlay(drawableBlue); OverlayItem overlayItem1 = new OverlayItem(beijing, "北京", "北京"); OverlayItem overlayItem2 = new OverlayItem(new Point2D(119.29781, 26.07859), "福州", "福州"); OverlayItem overlayItem3 = new OverlayItem(new Point2D(117.2757, 31.863255), "合肥", "合肥"); OverlayItem overlayItem4 = new OverlayItem(new Point2D(116.9671014491427, 36.65554103344072), "济南", "济南"); OverlayItem overlayItem5 = new OverlayItem(new Point2D(115.89992, 28.675991), "南昌", "南昌"); OverlayItem overlayItem6 = new OverlayItem(new Point2D(120.1650797808366, 30.25258003455749), "杭州", "杭州"); OverlayItem overlayItem7 = new OverlayItem(new Point2D(118.7980507758158, 32.0853446326497), "南京", "南京"); OverlayItem overlayItem8 = new OverlayItem(new Point2D(121.4700004384941, 31.22999934324168), "上海", "上海"); OverlayItem overlayItem9 = new OverlayItem(new Point2D(121.5066991712687, 25.03508867790034), "台北", "台北"); overlay.addItem(overlayItem1); overlay.addItem(overlayItem2); overlay.addItem(overlayItem3); overlay.addItem(overlayItem4); overlay.addItem(overlayItem5); overlay.addItem(overlayItem6); overlay.addItem(overlayItem7); overlay.addItem(overlayItem8); overlay.addItem(overlayItem9); overlay.addItem(overlayItem10); overlay.setOnFocusChangeListener(new SelectedOverlay()); mapView.getOverlays().add(new CustomOverlay()); mapView.getOverlays().add(overlay); // 重新onDraw一次 mapView.invalidate();
完整示例请参考Demo中的文本标注示例OverlayDemo。
地物绘制可以通过DefaultItemizedOverlay 来实现,然后通过mapView.getOverlays()来添到地图上。
private DefaultItemizedOverlay blueMarkerOverlay = null; private MarkerConfigDialog markerConfigDialog = null; //绘制绿色marker Drawable drawableBlue = getResources().getDrawable(R.drawable.blue_pin); blueMarkerOverlay = new DefaultItemizedOverlay(drawableBlue); mapView.getController().setZoom(6); mapView.getController().setCenter(new Point2D(116.391468, 39.904491)); mapView.addMapViewEventListener(new MapViewEventAdapter()); TouchOverlay touchOverlay = new TouchOverlay(); mapView.getOverlays().add(touchOverlay); mapView.getOverlays().add(blueMarkerOverlay);
完整示例请参考Demo中的OverlayEventDemo。