2012-04-27 75 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