Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我的位置下一次加载活动时会出现问题吗?_Android_Mylocationoverlay - Fatal编程技术网

Android 我的位置下一次加载活动时会出现问题吗?

Android 我的位置下一次加载活动时会出现问题吗?,android,mylocationoverlay,Android,Mylocationoverlay,朋友们 我注意到一件事,当我的位置相同时,屏幕上不会显示我的位置重叠标记 当我更改模拟器位置值时,它会显示在屏幕上,我进入下一页,然后再次进入同一页,但它不会显示。是的,当我更改位置值时,它会再次显示。我想显示它总是如果位置改变或没有 有人教我怎么做吗 这是我的密码 onCreate() { myLocOverlay = new MyLocationOverlay(this, mapView); myLocOverlay.enableMyLocation();

朋友们

我注意到一件事,当我的位置相同时,屏幕上不会显示我的位置重叠标记

当我更改模拟器位置值时,它会显示在屏幕上,我进入下一页,然后再次进入同一页,但它不会显示。是的,当我更改位置值时,它会再次显示。我想显示它总是如果位置改变或没有 有人教我怎么做吗

这是我的密码

onCreate()
{

 myLocOverlay = new MyLocationOverlay(this, mapView);
         myLocOverlay.enableMyLocation();
         mapView.getOverlays().add(myLocOverlay);
         mapView.postInvalidate();
zoomToMyLocation();
}


@Override
    protected void onPause() {
        super.onPause();
        if (myLocOverlay != null)
            myLocOverlay.disableMyLocation();
    }

    @Override
    public void onResume() {


        if (myLocOverlay != null)
            myLocOverlay.enableMyLocation();

        super.onResume();
    }

  private void zoomToMyLocation() {
                GeoPoint myLocationGeoPoint = myLocationOverlay.getMyLocation();
                if(myLocationGeoPoint != null) {
                        mapView.getController().animateTo(myLocationGeoPoint);
                        mapView.getController().setZoom(10);
                }
                else {
                        Toast.makeText(this, "Cannot determine location", Toast.LENGTH_SHORT).show();
                }
        }

如果您正在调用finish方法,而调用intent意味着您的另一个页面,那么您正在销毁页面中的所有值并向新页面移动

示例活动A活动B

从活动A移动到活动B

意向=新意向

意图。设置类

星状体

回到活动A


只需调用活动B的finish

实际上原因是

当我第一次加载记录时,它会在现场获得gps位置。有时,当我参加此活动时,gps会花时间获取位置,我的代码被传递,但什么也没有出现

所以问题是,若在一段时间内并没有获得位置,那个么我应该等待它,并在我们得到它时显示出来

所以我实现了RunOnFirstFix来解决这个问题。另一件最重要的事情是使用Mapview.postInvalidate在Mapview上显示它

因此,如果我们遵循这一步骤,我们就不会有我的位置覆盖问题

code sample onCreate()
{

// new line
myLocOverlay.runOnFirstFix(showCurrentLocationIfObtainedLate );

}


Runnable showCurrentLocationIfObtainedLate = new Runnable() {

            @Override
            public void run() {



                if(myLocOverlay.getMyLocation() != null)
                {
                mapView.getController().animateTo(myLocOverlay.getMyLocation());
                    mapView.postInvalidate();
                }



            }
        };