Igo*_*sky 75 android google-maps-api-2
在谷歌地图为Android v1,MapView有一个方便的方法:
getMapCenter()
.现在我无法弄清楚如何使用此API的v2获取地图中心.我已经仔细阅读了API文档,但没有提到这样的功能.请指教.
谢谢,伊戈尔
Rad*_*eci 183
我有同样的问题.看来你可以通过这种方式获得中心:
mMap.getCameraPosition().target
Run Code Online (Sandbox Code Playgroud)
其中mMap是您活动中的GoogleMap实例.这将返回一个LatLng对象,该对象基本上代表地图的中心.
请注意,该GeoPoint
课程不再可用.
根据http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html
target是"相机指向的位置".(我用示例代码对它进行了测试,它对我来说没问题)
sho*_*uro 32
我找到了两种方法:
1)最简单,第一个是使用Map的CameraPosition对象中的target属性
LatLng center = mMap.getCameraPosition().target;
Run Code Online (Sandbox Code Playgroud)
2)第二个是使用VisibleRegion对象:
VisibleRegion visibleRegion = mMap.getProjection()
.getVisibleRegion();
Point x = mMap.getProjection().toScreenLocation(
visibleRegion.farRight);
Point y = mMap.getProjection().toScreenLocation(
visibleRegion.nearLeft);
Point centerPoint = new Point(x.x / 2, y.y / 2);
LatLng centerFromPoint = mMap.getProjection().fromScreenLocation(
centerPoint);
Run Code Online (Sandbox Code Playgroud)
我比较了两个答案:
Log.d("MapFragment: ", "Center From camera: Long: " + center.longitude
+ " Lat" + center.latitude);
Log.d("Punto x", "x:" + x.x + "y:" + x.y);
Log.d("Punto y", "y:" + y.x + "y:" + y.y);
Log.d("MapFragment: ", "Center From Point: Long: "
+ centerFromPoint.longitude + " Lat"
+ centerFromPoint.latitude);
Run Code Online (Sandbox Code Playgroud)
小智 15
您可以使用 :
latlng=map.getProjection().getVisibleRegion().latLngBounds.getCenter();
Run Code Online (Sandbox Code Playgroud)
获取我在Activity中使用onMapReady()方法的地图中心,然后使用googleMap.setOnCameraChangeListener() method to get position of Came
:
@Override
public void onMapReady(GoogleMap googMap) {
googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
Log.i("centerLat",cameraPosition.target.latitude);
Log.i("centerLong",cameraPosition.target.longitude);
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果您只想获得一次位置(例如,在用户停止平移地图之后),请使用setOnCameraIdleListener
:
mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
LatLng position = mMap.getCameraPosition().target;
Log.d("MapActivity", "Position: " + position);
}
});
Run Code Online (Sandbox Code Playgroud)
或使用 Java 8 lambda:
mMap.setOnCameraIdleListener(() -> {
LatLng position = mMap.getCameraPosition().target;
Log.d("MapActivity", "Position: " + position);
});
Run Code Online (Sandbox Code Playgroud)
请注意,注册的侦听setOnCameraChangeListener
器被多次调用,并且如文档所述:
这可以像每帧一次那样频繁地调用,并且不应该执行昂贵的操作。
归档时间: |
|
查看次数: |
53562 次 |
最近记录: |