2012-04-27 79 views
1

好的我以前就问过这个。得到了一个答案。我将更深入地了解我在做什么。我正在为拥有多个商店的企业创建应用程序。我有一个向每个商店显示按钮的布局。点击其中一个按钮,它会带您进入另一个视图,其上有两个按钮。在这个视图中,有一个按钮,当你点击它时,它会调用你的商店,让它工作得很好。另一个按钮在同一个视图中,当你点击它时,它会把你带到谷歌地图,并显示你在哪里商店的位置。这一切工作正常。但我想要的是在地图上显示的标记。我不需要它做任何事情,但向顾客展示这是商店所在的位置。这是我的代码,我使用的是--->在我的谷歌地图上放置了一个精确的标记

import com.google.android.maps.GeoPoint; 

import com.google.android.maps.MapActivity; 

import com.google.android.maps.MapController; 

import com.google.android.maps.MapView; 

import com.google.android.maps.MyLocationOverlay; 

import android.os.Bundle; 

public class Main extends MapActivity { 

    MapController mControl; 

    GeoPoint GeoP; 

    MapView navView; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     navView = (MapView) findViewById(R.id.navView); 

     navView.displayZoomControls(true); 

     navView.setBuiltInZoomControls(true); 

      navView.setSatellite(true); 

      navView.getOverlays().add(new MyLocationOverlay(this,navView)); 




     double lat = 40.325874; 

     double longi = -76.002211; 

     GeoP = new GeoPoint((int) (lat *1E6), (int) (longi * 1E6)); 

     mControl = navView.getController(); 

     mControl.animateTo(GeoP); 

     mControl.setZoom(20); 

     } 

    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 

    } 
} 
+0

看到这个帖子http://stackoverflow.com/questions/10339759/wanting-to-know-how-to-place-a-pinpoint-marker-to-my-lat-long -using-this-code – 2012-04-27 03:21:35

+0

是的,这是我以前的帖子...我需要更多的帮助...我试过了,如果你看到我在上面的代码中有它。我一直在网上搜索答案。我收到并不知道该怎么做或如何使用此代码来完成此操作。 – KodiakBear211 2012-04-27 03:39:42

回答

1
GeoPoint p = mapView.getProjection().fromPixels((int) event.getX(),(int) event.getY()); 
Drawable srcdrawable = getApplicationContext().getResources().getDrawable(R.drawable.pin_blue); 
CustomItemizedOverlay srcitemizedOverlay = new CustomItemizedOverlay(srcdrawable, getApplicationContext()); 
OverlayItem srcoverlayitem = new OverlayItem(p, "Hello!", "This is your Location."); 
srcitemizedOverlay.addOverlay(srcoverlayitem); 
mapView.getOverlays().clear(); 
mapView.getOverlays().add(srcitemizedOverlay); 
mapController.animateTo(srcpoint); 
mapController.setZoom(16); 

使用上面的代码在ontouch方法中也使用下面的CustomItemizedOverlay.java类

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

    private final ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 

    private Context context; 

    public CustomItemizedOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 

    public CustomItemizedOverlay(Drawable defaultMarker, Context context) { 
     this(defaultMarker); 
     this.context = context; 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mapOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mapOverlays.size(); 
    } 

    public void addOverlay(OverlayItem overlay) { 
     mapOverlays.add(overlay); 
     this.populate(); 
    } 

} 
+0

我是否必须重写我的代码才能使用它?对不起,我是一个新人。我不确定把它放在我的代码中。我知道最后一个是第二个Java类。我尝试使用我的代码中的第一个。我从GeoPoint p = mapView.getProjection()中的“event”中得到了一个错误。fromPixels((int)event.getX(),(int)event.getY());代码行。 – KodiakBear211 2012-04-28 05:13:49

+0

不,只是添加类和上面的代码在创建方法 – 2012-04-28 05:16:21

+0

对不起兄弟...我似乎无法得到这个为我工作。我感谢您的帮助!!!但是这个代码蚂蚁使用我的代码。如果你喜欢它。如果你可以的话。写我的代码,并插入你的代码,看看它是否工作。并发布它听到,所以我可以看到如何做到这一点。这将不胜感激,但不一定需要。 – KodiakBear211 2012-04-28 14:45:00