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谷歌地图Api v2当前位置空_Android_Null_Maps - Fatal编程技术网

Android谷歌地图Api v2当前位置空

Android谷歌地图Api v2当前位置空,android,null,maps,Android,Null,Maps,你好。我正在尝试使用map.getMyLocation()获取当前位置,但我肯定会收到NullPointerException,因为我的位置有一段时间没有加载。因此,我正在执行MapReady检查和MapLoaded检查,这两种检查都会在map ready及其加载后触发,但不幸的是,我的当前位置如何,似乎我永远也不知道它什么时候可用。下面是我的代码片段,我认为它可能会进行正常的空检查 @Override public void on

你好。我正在尝试使用
map.getMyLocation()
获取当前位置,但我肯定会收到NullPointerException,因为我的位置有一段时间没有加载。因此,我正在执行MapReady检查和MapLoaded检查,这两种检查都会在map ready及其加载后触发,但不幸的是,我的当前位置如何,似乎我永远也不知道它什么时候可用。下面是我的代码片段,我认为它可能会进行正常的空检查

            @Override
                    public void onMapLoaded() {
        //here my map is loaded so this triggers.
    if(map.getMyLocation()!=null){
//do something here. 

    }
        }

但我的空检查似乎永远不会起作用,因为一旦我上面写的方法触发,它就不会等待我的if条件,它只会检查它是否不满足我的if条件,所以我的if条件就不会触发。问题是,当我的位置被启用时,如何通知我?我甚至尝试将其放入循环中但是如果我在
UI线程上执行
while()
操作,它就会冻结,如果我在
线程上执行
操作,它不会让我做任何事情,因为谷歌地图需要在
main线程上执行,是否?如果某段代码不为空,我如何触发该代码?

我在应用程序中使用该代码。
尝试在应用程序中实现此功能

//Global Declaration
GoogleMap googleMap;
LocationManager locationManager;
Location location;
CameraUpdate cameraUpdate;

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

    location = googleMap.getMyLocation();
    if (location != null) {
        LatLng latLang = new LatLng(location.getLatitude(), location.getLongitude());
        cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLang, 17);
        googleMap.animateCamera(cameraUpdate);
    } else {

        AlertDialog.Builder builder = new AlertDialog.Builder(MapScreen.this);
        builder.setTitle("Warning");
        builder.setMessage("Location Not Found...!!!");
        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        }).show();
    }
} else {
    showAlertDialog();
}

private void showAlertDialog () {

    AlertDialog.Builder builder = new AlertDialog.Builder(MapScreen.this);
    builder.setTitle("Warning");
    builder.setMessage("Device GPS is currently OFF. Please Turn ON.");
    builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {

        }
    }).show();
}

意味着你想检查你的设备gps是开着还是关着??不,我事先做了检查,意味着我无法预测当前位置的蓝色圆圈何时可用,但谷歌“聪明”的大脑似乎没有得到这一点,所以我需要一些东西,一旦地图上显示当前位置的蓝色圆圈,就会触发,这是我在谷歌地图api中找不到的。好的,当地图加载时,你想去你当前的位置吗?是的,你的权利,我只想用这个代码“map.getMyLocation”来获取它,因为我将在后面玩这个代码谢谢,在我实现这个问题之前,这段代码会一直触发直到启用当前位置吗?或者java会运行这段代码并看到当前位置为null并传递条件吗?实现这段代码并调试这段代码您将很容易找到您的ans…:)非常感谢。这不是我想要的,尽管我刚刚实现并警告位置将自动更新:D不公平地说,这不是我们的问题,这不是谷歌愚蠢的谷歌开发者的问题。你可以制作这样的API…不管怎样,这都是我的想法。非常感谢你的帮助