文本标注与地物标绘

发送反馈


支持对地图添加文本标注和在线绘制并添加几何地物等,可以通过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。