v2 Android지도의지도 중심을 얻는 방법은 무엇입니까?
Android v1 용 Google지도 에서 MapView에는 getMapCenter()
. 이제이 API의 v2 로지도 센터를 얻는 방법을 알 수 없습니다 . API 문서를 숙독했지만 그러한 기능에 대한 언급은 없습니다. 조언하십시오.
고마워, 이고르
나는 같은 문제가 있었다. 이런 식으로 센터를 얻을 수있는 것 같습니다.
mMap.getCameraPosition().target
여기서 mMap은 활동의 GoogleMap 인스턴스입니다. 이렇게하면 기본적으로지도의 중심을 나타내는 LatLng 객체가 반환됩니다.
점을 유의 GeoPoint
클래스는 더 이상 사용할 수 없습니다.
http://developer.android.com/reference/com/google/android/gms/maps/model/CameraPosition.html 에 따르면
target은 "카메라가 가리키는 위치"입니다. (샘플 코드로 테스트했는데 괜찮 았습니다)
두 가지 방법을 찾았습니다.
1) 가장 쉬운 방법, 첫 번째는 Map의 CameraPosition Object에서 target 속성을 사용하는 것입니다.
LatLng center = mMap.getCameraPosition().target;
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);
두 답변을 비교했습니다.
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);
당신이 사용할 수있는 :
latlng=map.getProjection().getVisibleRegion().latLngBounds.getCenter();
지도의 중심을 얻기 위해 활동에서 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);
}
});
}
위치를 한 번만 얻으려면 (예 : 사용자가지도 이동을 중지 한 후) 다음을 사용합니다 setOnCameraIdleListener
.
mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
LatLng position = mMap.getCameraPosition().target;
Log.d("MapActivity", "Position: " + position);
}
});
또는 Java 8 람다 사용 :
mMap.setOnCameraIdleListener(() -> {
LatLng position = mMap.getCameraPosition().target;
Log.d("MapActivity", "Position: " + position);
});
에 등록 된 리스너 setOnCameraChangeListener
는 여러 번 호출되며 설명서에 다음 과 같이 나와 있습니다.
This may be called as often as once every frame and should not perform expensive operations.
best way use cameraPosition
java:
LatLng centerMap = googleMap.getCameraPosition().target;
kotlin:
googleMap?.cameraPosition?.target?.let {
// it is LatLng center
}
참고URL : https://stackoverflow.com/questions/13904505/how-to-get-center-of-map-for-v2-android-maps
'programing' 카테고리의 다른 글
Gson으로 JSON 배열을 구문 분석하는 방법 (0) | 2020.10.25 |
---|---|
postgres를 사용하여 string_agg에서와 같이 array_agg에서 null 값을 제외하는 방법은 무엇입니까? (0) | 2020.10.25 |
NULL 및 빈 문자열을 테스트하는 NSPredicate (0) | 2020.10.25 |
Android Studio-기기가 연결되었지만 '오프라인' (0) | 2020.10.25 |
Entity Framework-람다식이 대리자 형식이 아니기 때문에 '문자열'형식으로 변환 할 수 없습니다. (0) | 2020.10.25 |