Google 地图 api 当标记距离太远时,不会在屏幕上显示所有标记
Google map api not showing all the markers on the screen when the markers are too much distant
我正在尝试显示多段线,但无法让地图标记适合我的 phone 屏幕。
我在 GoogleMap 中有 2 个标记。
如果两个标记距离不是很远,一切正常,两个标记在屏幕上可见。
但是如果这两个标记距离很远,那么这两个标记在屏幕上是看不到的。
下面是我的代码:
static final LatLng HAMBURG = new LatLng(46.227638, 2.213749); // for example
static final LatLng HAMBURG_2 = new LatLng(-44.339565,147.637862); // for example
MapView map;
map = findViewById(R.id.mapView);
map.onCreate(null);
map.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions()
.position(HAMBURG)
.title("First Pit Stop")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
googleMap.addMarker(new MarkerOptions()
.position(HAMBURG_2)
.title("Wrong Turn!")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLACK);
options.add(pos_1, pos_2);
googleMap.addPolyline(options);
}
});
map.onResume();
}
});
如何让所有的庄家在屏幕上可见?
如何让所有的庄家都适合屏幕?
我该怎么办?
谢谢。
使用以下内容更新您的代码:
int padding = 0;
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(pos_1);
builder.include(pos_2);
LatLngBounds bounds = builder.build();
final CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
googleMap.animateCamera(cu);
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLACK);
options.add(pos_1, pos_2);
googleMap.addPolyline(options);
}
});
我正在尝试显示多段线,但无法让地图标记适合我的 phone 屏幕。
我在 GoogleMap 中有 2 个标记。
如果两个标记距离不是很远,一切正常,两个标记在屏幕上可见。
但是如果这两个标记距离很远,那么这两个标记在屏幕上是看不到的。
下面是我的代码:
static final LatLng HAMBURG = new LatLng(46.227638, 2.213749); // for example
static final LatLng HAMBURG_2 = new LatLng(-44.339565,147.637862); // for example
MapView map;
map = findViewById(R.id.mapView);
map.onCreate(null);
map.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
googleMap.addMarker(new MarkerOptions()
.position(HAMBURG)
.title("First Pit Stop")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
googleMap.addMarker(new MarkerOptions()
.position(HAMBURG_2)
.title("Wrong Turn!")
.icon(BitmapDescriptorFactory
.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLACK);
options.add(pos_1, pos_2);
googleMap.addPolyline(options);
}
});
map.onResume();
}
});
如何让所有的庄家在屏幕上可见?
如何让所有的庄家都适合屏幕?
我该怎么办?
谢谢。
使用以下内容更新您的代码:
int padding = 0;
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(pos_1);
builder.include(pos_2);
LatLngBounds bounds = builder.build();
final CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
googleMap.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
googleMap.animateCamera(cu);
PolylineOptions options = new PolylineOptions().width(5).color(Color.BLACK);
options.add(pos_1, pos_2);
googleMap.addPolyline(options);
}
});