我在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);
}
}
我的地图显示正确,但我的图钉没有显示,请帮我找出我所犯的错误。
提前谢谢。
答案 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);