谷歌地图上的android绘图针

时间:2012-02-22 13:05:19

标签: android google-maps

我在Android应用程序中创建了googlemap。现在我想在我的位置画针。

这是我的代码: -

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 :(得分:3)

一切看起来都不错,除非你的观点是“关闭”。

您的计算错误,因为您的引脚应显示在坐标0,0附近。试试这个:

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

原因:你的(int)施法导致26和75,它应该在北极附近。查看文档:

  

构造一个具有给定纬度和经度的GeoPoint,以微度(度* 1E6)为单位。

答案 1 :(得分:0)

我用这段代码解决了我的问题。

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

现在工作正常。

WarrenFaith的答案也是正确的。

答案 2 :(得分:0)

问题在于您的观点。试试这些观点。

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