시나리오Google지도 API V2 addMarker 및 OnCameraChangeListener
- 초기 사용자의 위치를 읽어와 마커는 카메라 위치가 해당 위치로 설정 + 추가됩니다.
- 사용자가 카메라를 드래그/줌할 때마다 웹 서비스를 호출하고지도의 직사각형 좌표를 전달해야합니다. 이 웹 서비스는지도의 범위 내에있는 마커로 표시 할 위치 목록을 반환합니다.
그래서 기본적으로 내가 좋아하는 일을하고있다 : 각 항목은 웹 서비스에서 반환을위한 작업 onPostExecute에
에서 onCreate
mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
// Make a web call for the locations
myTask = new MyTask();
myTask.execute();
}
를 걸 :
mMap.addMarker(
new MarkerOptions().position(
new LatLng(myPoint.getLatitude(), myPoint.getLongitude())
)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_pushpin))
);
예상되는 동작 : : 사용자가 스크롤이나 줌, 카메라 위치 변경 및 비동기 작업이 활성화 좌표
의 신선한 배치를 얻기 위해 다시 호출 될 때마다실제 행동 : onPostExecute
와 OnCameraChangeListener
사이의 무한 루프 .
내게는 어쩌면 내가 잘못한 것 같아서 addMarker
이 카메라 변경 이벤트를 트리거합니까? 위에서 설명한 예상되는 동작을 어떻게 만들 수 있습니까?
addMarker가 카메라 업데이트를 트리거하지 않는다는 사실을 확인해 주셔서 감사합니다. 나는 내 코드를 조금 더보고 문제를 보았다. (나쁜 활동은 재시작했다.) 마커가있는 것은 그들이 대부분의 시간에 역동적이어서 모든 것을 다시 읽는 것이다. – Alin
@Alin 대부분의 시간은 얼마나 자주합니까? 마커는 사람을 나타 냅니까? 'onCameraChange'를 사용하여 트리거하는 것은 여전히 좋지 않습니다. 사용자는 더 오랜 시간 동안 상호 작용할 필요가 없으며 미친 것처럼 스 와이프하여 남극 대륙에 어떤 마커가 있는지 확인할 수 있습니다. X 분/시간/일 단위로 데이터 업데이트를받는 것이 훨씬 좋습니다. 물론 폴링은 결코 밀어 붙이지 않을 것입니다. –
프로젝트 사양은 다음과 같습니다. 사용자가 30 초 간격으로 스 와이프/줌할 때마다 마커를 가져옵니다. 마커는 자동차입니다. 문제는 웹 서비스는 가시적 인 좌표에 대해서만 데이터를 반환하기 때문에 조금 끄고 드래그하면 나머지 마커를 업데이트하고 새로운 마커를 표시해야합니다. 보시다시피, 매번 호출되는 웹 서비스를 얻는 것이 유일한 방법 일 것입니다. 마커는 내가 믿는 약 10-15이다. 이 앱은 매우 구체적이어서 특정 도시에서만 사용되므로 사용자가 너무 크게 축소/스 와이프 할 필요가 없습니다. – Alin