private void initMyLocation() {
myLocOverlay = new MyLocationOverlay(this, myMap);
myLocOverlay.enableCompass();
myLocOverlay.enableMyLocation();
myMap.getOverlays().add(myLocOverlay);
if (myLocOverlay == null)
{
assignFirstLoc();
}
if (myLocOverlay != null)
{
Log.e("error","1");
p = new GeoPoint((int) (myLocOverlay.getMyLocation().getLatitudeE6()), (int) (myLocOverlay.getMyLocation().getLongitudeE6()));
mc = myMap.getController();
mc.animateTo(p);
mc.setCenter(p);
} 我在日志中看到了"error 1“消息,但之后我遇到了一个空指针异常,我不知道为什么,我相信我用"if”块检查了myLocOverlay是否为空。有什么建议吗?
编辑:
这是我的assignedGFirstLoc方法,它分配了第一个值:
private void assignFirstLoc()
{
final String coordinates[] = {"41.00527", "28.97696"};
double lat2 = Double.parseDouble(coordinates[0]);
double lng2 = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat2 * 1E6), (int) (lng2 * 1E6));
myMap.getController().setZoom(16);
myMap.getController().animateTo(p);
myMap.getController().setCenter(p);
}发布于 2011-03-16 23:25:51
MyLocationOverlay只能用于显示来自传感器的位置。您不能设置它。因为MyLocationOverlay.getMyLocation()返回null,所以您得到了一个NullPointer。传感器还没来得及捕捉地理位置。
如果您想要显示传感器获得数据时的位置,您可以这样做:
mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
mapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});如果你想在任意位置显示一个项目(带有经度值和纬度值),你需要实现你自己的ItemizedOverlay版本,你可以在SDK文档中找到一个例子:Google Map View tutorial,Part2 AddingOverlayItem
如果您只想在地图上显示任意位置,则不需要覆盖。只要调用你的函数,它就会工作:
private void initMyLocation() {
assignFirstLoc();
}发布于 2011-03-16 19:04:54
看起来您没有将任何坐标传递到GeoPoint中。除非它在代码中的其他位置。像这样的东西是有效的
String coordinates[] = {"41.146064", "-80.642861"};
double lat = Double.parseDouble(coordinates[0]);
double lng = Double.parseDouble(coordinates[1]);
p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6));https://stackoverflow.com/questions/5323918
复制相似问题