Android 如何在谷歌地图上显示多个点?
启动Google Maps时,我关注地图上的一个点,如下所示:Android 如何在谷歌地图上显示多个点?,android,google-maps,Android,Google Maps,启动Google Maps时,我关注地图上的一个点,如下所示: GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6), (int) (src_long * 1E6)); GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6), (int) (dest_long * 1E6)); DrawPath(srcGeoPoint, destGeoPoint,
GeoPoint srcGeoPoint = new GeoPoint((int) (src_lat * 1E6), (int) (src_long * 1E6));
GeoPoint destGeoPoint = new GeoPoint((int) (dest_lat * 1E6), (int) (dest_long * 1E6));
DrawPath(srcGeoPoint, destGeoPoint, Color.BLUE, mapView);
mapView.getController().animateTo(destGeoPoint);
如果我使用mapView.getController().animateTo(destGeoPoint)代码>地图仅聚焦于点destGeoPoint
。
我希望地图在启动谷歌地图时显示两个点:srcGeoPoint
和destGeoPoint
。
这两点在地图上已经画好了。我想在地图打开时看到两点。试着阅读Android烹饪书中的章节。其主要思想是向MapActivity添加一个内部类,该类扩展ItemizeOverlay并实现抽象方法和默认构造函数。ItemIzeOverlay使用createItem和size()方法的实现来获取实现中的所有覆盖项并进行聚合
创建地图覆盖:
public class MapOverlay extends Overlay {
MapView mapView;
GeoPoint p;
private Context c;
public MapOverlay(Context c, MapView m, GeoPoint p){
this.c=c;
mapView=m;
this.p=p;
}
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
//---add the marker---
Bitmap bmp = BitmapFactory.decodeResource(c.getResources(), R.drawable.icon_notif);
canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);
return true;
}
}
这是一个启动映射的方法:
private void initMapa() {
try{
//If you want zoom controls
mapa.setBuiltInZoomControls(true);
GeoPoint loc;
Double lat;
Double long;
MapController controlMapa = mapa.getController();
controlMapa.setZoom(13); // de 1 a 21
mapa.setSatellite(true);
mapa.displayZoomControls(true);
// First point
ArrayList<GeoPoint> ap=new ArrayList<GeoPoint>();
latitud = (double) lat1 *1E6;
longitud = (double) long1 *1E6;
loc = new GeoPoint(latitud.intValue(), longitud.intValue());
controlMapa.animateTo(loc);
ap.add(loc);
// Second point
latitud = (double) fichaOtraPersona.getLoc_lan()*1E6;
longitud = (double) fichaOtraPersona.getLoc_lon()*1E6;
loc = new GeoPoint(latitud.intValue(), longitud.intValue());
ap.add(loc);
controlMapa.animateTo(loc);
addPointInTheMap(ap);
} catch (Exception e) {
showToast("Error");
}
}
private void initMapa(){
试一试{
//如果您想要缩放控件
mapa.SetBuilTinZoomControl(真);
地质点定位;
双lat;
双倍长;
MapController controlMapa=mapa.getController();
controlMapa.setZoom(13);//de 1 a 21
mapa.setSatellite(真);
mapa.DisplayZoomControl(真);
//第一点
ArrayList ap=新的ArrayList();
纬度=(双)纬度1*1E6;
longitud=(双)long1*1E6;
loc=新的地质点(latitud.intValue(),longitud.intValue());
controlMapa.animateTo(loc);
ap.add(loc);
//第二点
latitud=(双)fichaotraperona.getLoc_lan()*1E6;
longitud=(双)fichaotraperona.getLoc_lon()*1E6;
loc=新的地质点(latitud.intValue(),longitud.intValue());
ap.add(loc);
controlMapa.animateTo(loc);
addPointInTheMap(ap);
}捕获(例外e){
showtoost(“错误”);
}
}
以及addPointInTheMap方法:
private void anadirPuntoEnMapa(ArrayList<GeoPoint> points){
//---Add a location marker---
List<Overlay> listOfOverlays = mapa.getOverlays();
listOfOverlays.clear();
Iterator<GeoPoint> it=points.iterator();
while (it.hasNext()){
MapOverlay mapOverlay = new MapOverlay(getApplicationContext(), mapa, it.next());
listOfOverlays.add(mapOverlay);
}
mapa.invalidate();
}
private void anadirpuntonempa(数组列表点){
//---添加位置标记---
List listOfOverlays=mapa.getOverlays();
listOfOverlays.clear();
迭代器it=points.Iterator();
while(it.hasNext()){
MapOverlay MapOverlay=新的MapOverlay(getApplicationContext(),mapa,it.next());
添加(映射覆盖);
}
mapa.invalidate();
}
我今天刚刚回答了类似的问题,我的问题是缩放地图可以在开始地图时显示2个点。(这2个点已经绘制)