gpt4 book ai didi

android - MyLocationOverlay 问题

转载 作者:太空狗 更新时间:2023-10-29 15:31:27 27 4
gpt4 key购买 nike

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);

}

我在 logcat 中看到“错误 1”消息,但在那之后我出现了一个空指针异常,我不知道为什么,我相信我用“if” block 检查 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);

}

最佳答案

MyLocationOverlay 只能用于显示来自传感器的位置。你不能设置它。您得到一个 NullPointer,因为 MyLocationOverlay.getMyLocation() 返回 null。传感器还没有时间捕捉地理定位。

如果您想在传感器获得数据时显示位置,您可以这样做:

mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
mapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});

如果你想在任意位置显示一个项目(带有纬度和经度值)你需要实现你自己的 ItemizedOverlay 版本您可以在 SDK 文档中找到示例:Google Map View tutorial , Part2 添加OverlayItem

如果您只想显示 map 上的任意位置,则不需要叠加层。只需调用您的函数,它就会起作用:

private void initMyLocation() {
assignFirstLoc();
}

关于android - MyLocationOverlay 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5323918/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com