Android 地图 - 如何自动将地图居中到用户当前位置?
Android Maps - how to automatically center the map to the user's current location?
我有一个 Google 地图 Activity,我希望相机在地图 opens/the 蓝点出现时立即以用户为中心并放大,这样用户不必按 "center button",我也不必硬编码地图相机的位置。
我发现了很多已有 5-6 年历史的代码示例,因此 none 其中的代码示例已经可以使用了。
是否有可能再获取当前用户位置(纬度和经度)?
请试试这个:
private void centerOnMyLocation() {
map.setMyLocationEnabled(true);
location = map.getMyLocation();
if (location != null) {
myLocation = new LatLng(location.getLatitude(),
location.getLongitude());
}
map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
Constants.MAP_ZOOM));
}
更新属性名称并调用此代码以当前用户的位置为中心。
如果您已经有当前位置,只需调用此函数:
map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
Constants.MAP_ZOOM));
首先,您需要一个 LatLngBounds 对象,这是必需的,以便您可以定义将绑定地图的位置。
然后,您需要定义设备的宽度和高度,这很简单。
只需按照下面的代码
LatLngBounds.Builder builder = new LatLngBounds.Builder();
//Insert your location
builder.include(location1);
builder.include(location2);
LatLngBounds bounds = builder.build();
//Get the width and height of the device's screen
int width = getResources().getDisplayMetrics().widthPixels;
int height = (int) ((getResources().getDisplayMetrics().heightPixels) * 0.85);
int padding = (int) (width * 0.15);
//Centralize the markers
yourMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding));
我有一个 Google 地图 Activity,我希望相机在地图 opens/the 蓝点出现时立即以用户为中心并放大,这样用户不必按 "center button",我也不必硬编码地图相机的位置。
我发现了很多已有 5-6 年历史的代码示例,因此 none 其中的代码示例已经可以使用了。
是否有可能再获取当前用户位置(纬度和经度)?
请试试这个:
private void centerOnMyLocation() {
map.setMyLocationEnabled(true);
location = map.getMyLocation();
if (location != null) {
myLocation = new LatLng(location.getLatitude(),
location.getLongitude());
}
map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
Constants.MAP_ZOOM));
}
更新属性名称并调用此代码以当前用户的位置为中心。
如果您已经有当前位置,只需调用此函数:
map.animateCamera(CameraUpdateFactory.newLatLngZoom(myLocation,
Constants.MAP_ZOOM));
首先,您需要一个 LatLngBounds 对象,这是必需的,以便您可以定义将绑定地图的位置。
然后,您需要定义设备的宽度和高度,这很简单。
只需按照下面的代码
LatLngBounds.Builder builder = new LatLngBounds.Builder();
//Insert your location
builder.include(location1);
builder.include(location2);
LatLngBounds bounds = builder.build();
//Get the width and height of the device's screen
int width = getResources().getDisplayMetrics().widthPixels;
int height = (int) ((getResources().getDisplayMetrics().heightPixels) * 0.85);
int padding = (int) (width * 0.15);
//Centralize the markers
yourMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding));