2012-02-22 4 views
0

私はアンドロイドアプリケーションでgooglemapを作成しました。今私は私の場所にピンを描きたい。android draw pin on google

public class GooglemapActivity extends MapActivity { 
private List<Overlay> mapOverlays; 
private Drawable drawable; 
private MyOverlay itemizedOverlay; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    MapView mMapView; 
    mMapView = (MapView) findViewById(R.id.mapview); 
    mMapView.setBuiltInZoomControls(true); 
    mapOverlays = mMapView.getOverlays(); 
    drawable = getResources().getDrawable(R.drawable.c_map_pin_blue); 
    itemizedOverlay = new MyOverlay(drawable); 
    GeoPoint point = new GeoPoint((int) 26.863966000000000, 
      (int) 75.766938300000000); 

    itemizedOverlay.addItem(point, "Quippelin", "0"); 
    mapOverlays.add(itemizedOverlay); 

} 

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

と、これは私の別のクラスである: - - :

これは、そのために私のコードです

public class MyOverlay extends ItemizedOverlay<OverlayItem> { 
private ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>(); 

public MyOverlay(Drawable marker) { 
    super(boundCenterBottom(marker)); 
    // TODO Auto-generated constructor stub 

    populate(); 
} 

public void addItem(GeoPoint p, String title, String snippet) { 
    OverlayItem newItem = new OverlayItem(p, title, snippet); 
    overlayItemList.add(newItem); 
    populate(); 
} 

@Override 
protected OverlayItem createItem(int i) { 
    // TODO Auto-generated method stub 
    return overlayItemList.get(i); 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return overlayItemList.size(); 
} 

@Override 
public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
    // TODO Auto-generated method stub 
    super.draw(canvas, mapView, shadow); 
    // boundCenterBottom(marker); 
} 
} 

私のマップが正しく表示されているが、私のピンが表示されていない、私を助けてください私がした間違いを見つけ出す。

ありがとうございます。

答えて

3

あなたのポイントが「オフ」であることを除いて、すべてがうまく見えます。

ピンが座標0,0の近くに表示されるため、計算が間違っています。試してみてください:

GeoPoint point = new GeoPoint((int) (26.863966 * 1E6), (int) (75.7669383 * 1E6)); 

理由:あなたの(int)キャスト結果は26と75で、北極近くのどこかにあるはずです。ドキュメントを確認してください:

マイクロディグリー(度* 1E6)で測定された緯度と経度でGeoPointを作成します。

0

このコードを使用して問題を解決しました。

double mLatitude = 26.863966000000000; 
    double mLongtitude = 75.766938300000000; 
    GeoPoint point = new GeoPoint((int) (mLatitude * 1E6),(int) (mLongtitude * 1E6)); 

現在は正常です。

とWarrenFaithの回答も正しいです。

0

問題はあなたの問題です。これらの点を試してください。

GeoPoint point = new GeoPoint((int) 19240000,(int) -99120000);