Android Google 地图 Api v2 当前位置 Null
Android Google Maps Api v2 current Location Null
很好 Day.Im 尝试使用 map.getMyLocation()
获取当前位置,但我肯定会收到 NullPointerException,因为我的位置没有加载 while.So 我正在检查 MapReady和 MapLoaded 检查哪一个在地图准备好并加载后触发,但不幸的是我当前的位置呢,似乎我永远不会知道它的 available.Here 是我的代码片段,尽管我可能会进行正常的空检查。
@Override
public void onMapLoaded() {
//here my map is loaded so this triggers.
if(map.getMyLocation()!=null){
//do something here.
}
}
但我的空检查似乎永远不会起作用,因为一旦我上面写的方法触发它就不会等待我的 if 条件它只是检查它是否不满足我的 if 条件只是检查它所以我的 if 条件从来没有 triggers.Problem 是当我的位置启用时如何通知我?我什至试图将其放入 while()
的循环但如果我在 UI thread
上这样做它会冻结并且不会让如果我在 THREAD
上做任何事情,我都会做任何事情,因为 google 地图需要在 MainThread
上完成。所以我的下一个问题是,在世界上如何通知我我的位置是否为空,还是不?一旦它不是NULL
我怎么能触发一些代码?
我在我的应用程序中使用此代码..
尝试在您的应用程序中实现此代码
//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();
}
很好 Day.Im 尝试使用 map.getMyLocation()
获取当前位置,但我肯定会收到 NullPointerException,因为我的位置没有加载 while.So 我正在检查 MapReady和 MapLoaded 检查哪一个在地图准备好并加载后触发,但不幸的是我当前的位置呢,似乎我永远不会知道它的 available.Here 是我的代码片段,尽管我可能会进行正常的空检查。
@Override
public void onMapLoaded() {
//here my map is loaded so this triggers.
if(map.getMyLocation()!=null){
//do something here.
}
}
但我的空检查似乎永远不会起作用,因为一旦我上面写的方法触发它就不会等待我的 if 条件它只是检查它是否不满足我的 if 条件只是检查它所以我的 if 条件从来没有 triggers.Problem 是当我的位置启用时如何通知我?我什至试图将其放入 while()
的循环但如果我在 UI thread
上这样做它会冻结并且不会让如果我在 THREAD
上做任何事情,我都会做任何事情,因为 google 地图需要在 MainThread
上完成。所以我的下一个问题是,在世界上如何通知我我的位置是否为空,还是不?一旦它不是NULL
我怎么能触发一些代码?
我在我的应用程序中使用此代码..
尝试在您的应用程序中实现此代码
//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();
}