首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyLocationOverlay问题

MyLocationOverlay问题
EN

Stack Overflow用户
提问于 2011-03-16 18:24:13
回答 2查看 8.3K关注 0票数 2
代码语言:javascript
复制
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方法,它分配了第一个值:

代码语言:javascript
复制
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);

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-16 23:25:51

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

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

代码语言:javascript
复制
mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
        mapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});

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

如果您只想在地图上显示任意位置,则不需要覆盖。只要调用你的函数,它就会工作:

代码语言:javascript
复制
private void initMyLocation() {
    assignFirstLoc();
}
票数 16
EN

Stack Overflow用户

发布于 2011-03-16 19:04:54

看起来您没有将任何坐标传递到GeoPoint中。除非它在代码中的其他位置。像这样的东西是有效的

代码语言:javascript
复制
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));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5323918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档