我在 Android 中使用谷歌地图。我无法调整缩放级别。
我在 map 中心有一个标记,我使用 mapController.setCenter(current_location); 设置了它;
我有 10 个或更多标记以不同颜色显示在 map 上。
预期结果:人的当前位置应始终位于中心,我必须调整缩放级别,以便绿色标记显示在屏幕上(当前位置标记位于中心)。
我尝试过的:
int greenlat = (int) (AppCoordinates.getInstance().latitudelist.get(0) * 1E6); int greenlong = (int) (AppCoordinates.getInstance().longitudelist.get(0) * 1E6); int currentlat = (int) (AppCoordinates.getInstance().getCurrentLatitude() * 1E6); int currentlong = (int) (AppCoordinates.getInstance().getCurrentLongitude() * 1E6);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
mapController.zoomToSpan((int) (Math.abs(greenlat - currentlat) * 1), (int)(Math.abs(greenlong - currentlong) * 1));// to have some padding on the edges.
mapController.animateTo(new GeoPoint((greenlat + currentlat), (greenlong + currentlong)/2));
我可以在屏幕上显示标记,但我希望当前位置显示在屏幕中央。
最佳答案
我的想法是操纵 LatLngBounds,因为它代表所有包含的标记,可以在 map 上对齐的矩形中查看。所以我们只需要识别所有使当前位置将在 map 中心查看的点。
- 将所有标记放入边界。
- 将相机移动到您当前的位置作为中心点。
- 获取当前 map 所有角点的4个位置,并将其放在边界点列表中。
这是我的样本:
LatLngBounds.Builder builder = new LatLngBounds.Builder();
Marker myLocation = mMap.addMarker(new MarkerOptions()
.position(new LatLng(2.6,101.5))
.title("My-Current-Location"));
Marker addMarker1 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(2.6,101))
.title("Hello world-1"));
Marker addMarker2 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(2.7,101))
.title("Hello world-2"));
Marker addMarker3 = mMap.addMarker(new MarkerOptions()
.position(new LatLng(3.7,105))
.title("Hello world-3"));
builder.include(myLocation.getPosition());
builder.include(addMarker1.getPosition());
builder.include(addMarker2.getPosition());
builder.include(addMarker3.getPosition());
//haha enough to use for loop for all your markers
int padding = 100; // offset from edges of the map in pixels
CameraUpdate cameraUpdate =CameraUpdateFactory.newLatLngBounds(builder.build(), padding);
mMap.moveCamera(cameraUpdate);
mMap.moveCamera(CameraUpdateFactory.newLatLng(myLocation.getPosition()));
LatLng nrLatLng = mMap.getProjection().getVisibleRegion().nearRight;
LatLng frLatLng = mMap.getProjection().getVisibleRegion().farRight;
LatLng nlLatLng = mMap.getProjection().getVisibleRegion().nearLeft;
LatLng flLatLng = mMap.getProjection().getVisibleRegion().farLeft;
builder.include(nrLatLng);
builder.include(frLatLng);
builder.include(nlLatLng);
builder.include(flLatLng);
cameraUpdate =CameraUpdateFactory.newLatLngBounds(builder.build(), padding);
mMap.animateCamera(cameraUpdate);
关于java - 根据当前位置缩放标记位置android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757231/