大佬教程收集整理的这篇文章主要介绍了在Android中的谷歌地图上添加多个标记,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public class GoogleMap extends MapView { MapController mc; MapView mapView; GeoPoint p; @Override public void onCreate(Bundle savedInstanceStatE) { .... double lat = Double.parseDouble(bundle.getString("paramLat")); double lng = Double.parseDouble(bundle.getString("paramLong")); mc = mapView.getController(); p = new GeoPoint( (int) (lat * 1E6),(int) (lng * 1E6)); mc.animateTo(p); mc.setZoom(17); //---Add a LOCATIOn marker--- MapOverlay mapOverlay = new MapOverlay(); List<Overlay> listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); mapView.invalidate(); } class MapOverlay extends com.google.android.maps.Overlay { @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(getresources(),R.drawable.pushpin); canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null); return true; } }
我这里有两个问题.当我试图只添加一个标记时,它可以工作但是多次调用draw@L_874_7@.但为什么?什么时候被调用?
public class ShowMapActivity extends MapActivity{ private MapController mapControll; private GeoPoint geoPoint=null; private MapView mapview; private Myitemizedoverlay userPicOverlay; private Myitemizedoverlay nearPicOverlay; private Drawable userPic,atmPic; private OverlayItem nearatms[] = new OverlayItem[50]; public static Context context; @Override protected void onCreate(Bundle iciclE) { // TODO Auto-generated method stub super.onCreate(iciclE); context = getApplicationContext(); setContentView(R.layout.your layout xml); showMap(); } public void showMap() { // TODO Auto-generated method stub try { geoPoint = new GeoPoint((int)(latitude * 1E6),(int)(longitude * 1E6)); mapview = (MapView)findViewById(R.id.mapview); mapControll= mapview.getController(); mapview.setBuilTinZoomControls(true); mapview.setStreetView(true); mapControll.setZoom(16); mapControll.animateTo(geoPoint); userPic = this.getresources().getDrawable(R.drawable.your pic); userPicOverlay = new Myitemizedoverlay(userPic); OverlayItem overlayItem = new OverlayItem(geoPoint,"I'm Here!!!",null); userPicOverlay.addOverlay(overlayItem); mapview.getOverlays().add(userPicOverlay); atmPic = this.getresources().getDrawable(R.drawable.your pic); nearPicOverlay = new Myitemizedoverlay(atmPic); for (int i = 0; i < define your length here; i++) { nearatms[i] = new OverlayItem(new GeoPoint((int)((latitudE) * 1E6)),(int)(longitudE) * 1E6)),"Name",null);//just check the brackets i just made change here so.... nearPicOverlay.addOverlay(nearatms[i]); } mapview.getOverlays().add(nearPicOverlay); //Added symbols will be displayed when map is redrawn so force redraw Now mapview.posTinvalidate(); } catch (Exception E) { e.printStackTrace(); } } @Override protected Boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } }
用于放置标记的分项类别
public class Myitemizedoverlay extends itemizedoverlay<OverlayItem> { private ArrayList<OverlayItem> myOverlays ; public Myitemizedoverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); myOverlays = new ArrayList<OverlayItem>(); populate(); } public void addOverlay(OverlayItem overlay){ myOverlays.add(overlay); populate(); } @Override protected OverlayItem createItem(int i) { return myOverlays.get(i); } // Removes overlay item i public void removeItem(int i){ myOverlays.remove(i); populate(); } // Returns present number of items in list @Override public int size() { return myOverlays.size(); } public void addOverlayItem(OverlayItem overlayItem) { myOverlays.add(overlayItem); populate(); } public void addOverlayItem(int lat,int lon,String titlE) { try { GeoPoint point = new GeoPoint(lat,lon); OverlayItem overlayItem = new OverlayItem(point,title,null); addOverlayItem(overlayItem); } catch (Exception E) { // TODO: handle exception e.printStackTrace(); } } @Override protected Boolean onTap(int indeX) { // TODO Auto-generated method stub String title = myOverlays.get(indeX).gettitle(); Toast.makeText(ShowMapActivity.context,Toast.LENGTH_LONG).show(); return super.onTap(indeX); } }
以上是大佬教程为你收集整理的在Android中的谷歌地图上添加多个标记全部内容,希望文章能够帮你解决在Android中的谷歌地图上添加多个标记所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。