我想将地图缩放级别设置为适合地图上的所有标记。正如许多人所说,我使用了以下方法,但它对我不起作用。它正在显示其他点。
if (positions.size() > 0) {
final LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker m : positions) {
builder.include(m.getPosition());
}
builder.include(positions.get(i).getPosition());
}
try {
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(
builder.build(), UserDataManager.getInstance().getWidth(),
UserDataManager.getInstance().getWidth(),0));
googleMap.setOnCameraChangeListener(null);
}
});
} catch (IllegalStateException e) {
// TODO: handle exception
final View mapView = getSupportFragmentManager()
.findFragmentById(R.id.map).getView();
if (mapView.getViewTreeObserver().isAlive()) {
mapView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
// We check which build version we are using.
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
mapView.getViewTreeObserver()
.removeGlobalOnLayoutListener(
this);
} else {
mapView.getViewTreeObserver()
.removeOnGlobalLayoutListener(
this);
}
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(
builder.build(),
UserDataManager.getInstance().getWidth(),
UserDataManager.getInstance().getWidth(),0));
googleMap.setOnCameraChangeListener(null);
}
});
}
});
}
}
}
经过多次搜索,我找到了最合适的答案:
//LatLngBound will cover all your marker on Google Maps
LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (int i = 0; i < latLng.size(); i++) {
LatLng customMarkerLocation = new LatLng(latLng.get(i).getLat(), latLng.get(i).getLng());
mMap.addMarker(new MarkerOptions().position(customMarkerLocation).
icon(BitmapDescriptorFactory.fromBitmap(
createCustomMarker(getActivity(), R.drawable.ic_pepsi, "Manish")))).setTitle("iPragmatech Solutions Pvt Lmt");
builder.include(customMarkerLocation); //include Point to be covered
}
LatLngBounds bounds = builder.build();
int width = getResources().getDisplayMetrics().widthPixels;
int height = getResources().getDisplayMetrics().heightPixels;
int padding = (int) (width * 0.15); // offset from edges of the map 15% of screen
// to animate camera with some padding and bound -cover- all markers
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
mMap.animateCamera(cu);
参考:在Google Maps Marker中添加自定义图像,放大以在视图中保留所有标记
mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 15));
尝试使用此
//Calculate the markers to get their position
LatLngBounds.Builder b = new LatLngBounds.Builder();
for (Marker m : markers) {
b.include(m.getPosition());
}
LatLngBounds bounds = b.build();
//Change the padding as per needed
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 25,25,5);
mMap.animateCamera(cu);
检查我创建的包含此功能的Google Maps v2库,只需使用
Marker m1,m2, m3, m4 .... ;
mapHelper.zoomToFitMarkers(m1,m2, m3, m4 ....);
编辑:
获取当前位置
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//You can use GPS_PROVIDER also
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
currentLatitude = location.getLatitude();
currentLongitude = location.getLongitude();
//Add your marker here and zoom to fit it
//mapHelper.zoomToFitMarkers(m1,m2, m3, m4,mapHelper.addMarker(currentLatitude,currentLongitude,"Current Location"););
}
});
将一系列标记添加到传单JS地图后,是否可以让传单缩放并重新调整焦点以显示每个标记?我看到谷歌地图有很多类似的问题,但传单却没有。 像这样的东西: 我还注意到Leaflet中的几个函数可以获取地图的边界,但我不确定如何使用这些函数来达到预期的效果。
如何设置视图以在地图框或传单中查看地图上的所有标记?就像谷歌地图API对? 例如:
我在中有10个标记。我想尽可能地放大,让所有的标记都在视野中?在早期版本中,这可以通过实现,但在v2中,我不知道该如何实现。进一步,我知道需要可见的圆的半径。
你知道吗?
我使用以下代码向google地图添加标记并创建边界 我想做的是添加标记并以一种在具有固定高度的地图中都可见的方式进行缩放 所有图标是否会出现取决于我为填充添加的值。 如果我增加值,所有图标都会显示出来。否则其他的是隐藏的。 考虑到我的googleMap有固定的设置宽度,我如何为填充提供正确的值?
我有5个标记显示在地图上,其中4个非常接近彼此和第五个是一点点距离这4个。现在,当我显示地图,我希望所有这5个标记显示在地图上,并与最高可能的缩放。我不在乎它们是在屏幕的边框上还是在屏幕的中央。我的意思是标记可以分散在屏幕上,但我想要的是所有的标记都应该对用户可见,并且尽可能高的缩放。 但我不知道为什么缩放很少。但是温我看了android文档,我认为这个功能是在做正义的事情,它说它会做什么就做什么