MyLocationOverlay问题

edd*_*ker 2 android

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

            } 
Run Code Online (Sandbox Code Playgroud)

我在logcat中看到了"错误1"消息,但之后我拿了一个空指针异常,我不知道为什么,我相信我检查myLocOverlay是否为空或"if"阻止..任何suggesstions?

编辑:

这是我的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);

    }
Run Code Online (Sandbox Code Playgroud)

pca*_*ans 16

MyLocationOverlay只能用于显示来自传感器的位置.你不能设置它.你有一个NullPointer因为MyLocationOverlay.getMyLocation()返回null.传感器还没有时间赶上地理位置.

如果要在传感器获取数据时显示位置,可以执行以下操作:

mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
        mapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});
Run Code Online (Sandbox Code Playgroud)

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

如果您只想在地图上显示任意位置,则不需要叠加.只需调用您的函数,它将工作:

private void initMyLocation() {
    assignFirstLoc();
}
Run Code Online (Sandbox Code Playgroud)