2017-04-13 6 views
0

여기에서 Android SDK API를 사용하고 있습니다. 두 개의지도보기 인스턴스 - 하나의 노멀 맵은 mapFragment (map_1)이고 다른 하나는 OffscreenRenderer가 안드로이드 서비스 (map_2) 내에서 실행됩니다. enter image description here여기지도 SDK OffscreenRenderer지도 경로 결함 추가

희망이 계획은 몇 가지 설명을 제공합니다.

offscreenMap.addMapObject(route); 

후이 완벽하게 작동 시작 : 활동 사용자에 경로를 만들 때 그것은 제한된 서비스에 다음 인스턴스를하여 MyApplication을 보냅니다. 하지만 Activity가 파괴되어 다시 생성되면 같은 사용 사례에서 같은 메소드가 호출됩니다 (내 경로가 Service 인스턴스에 도달하는 로그가 표시됨). 그러나 offscreenMap은 즉시 업데이트되지 않습니다. 지도가 실제로 새로운 경로로 업데이트되기 전에 다소 긴 임의의 시간이 발생할 수 있습니다.

흥미로운 점은 사용자가 액티비티지도 인스턴스를 크게 확대 (또는지도 회전)하면 map_2가 즉시 새 경로로 업데이트된다는 것입니다. 그래서 제 질문은 - 여기가 버그입니까 아니면 오용입니까? 그리고 이런 일이 일어나지 않도록하려면 어떻게해야합니까?

다시 말하지만 안드로이드가 내 서비스를 파괴하거나 제한된 서비스에 연결이 끊어지는 문제는 아닙니다. 제대로 작동합니다. 서비스 메소드가 호출되는 것을 볼 수 있습니다.

희망 사항이 있으시면 업데이트

: (감사 데이비드 레옹) 해결 일반적인 경우의 문제는 :이 업데이트 될 필요가 있다고 인스턴스를지도 말해, setZoomLevel (getZoomLevel()) 방법이 도움이됩니다. 하지만! 같은 경우 Roadview 탐색 모드에서 실행중인 NavigationManager -지도가 아직 업데이트되지 않은 경우

map2 인스턴스에 대한 설명을위한 몇 가지 코드. 서비스가 시작되면 :

positionManager = PositioningManager.getInstance(); 
positionManager.start(PositioningManager.LocationMethod.GPS_NETWORK); 

navMngr = NavigationManager.getInstance(); 
navMngr.setMap(map2); 
navMngr.setMapUpdateMode(NavigationManager.MapUpdateMode.ROADVIEW); 
navMngr.startTracking(); 

경로를 추가하거나 변경할 때 : 활동이 처음 생성 살아있는 동안

public void addRoute(Route route) { 
    Log.d(TAG, "addRoute"); 

    MapRoute mainRoute = new MapRoute (route); 

    if (currentRoute != null) { 
     map2.removeMapObject(currentRoute); 
    } 
    currentRoute = mainRoute; 

    map2.addMapObject(currentRoute); 
    map2.setZoomLevel(map2.getZoomLevel()); 

    //navMngr.stop(); 
    navMngr.startNavigation(currentRoute.getRoute()); 
} 

-이 코드가 작동합니다. 하지만 파괴되고 재현 될 때 map2는 map1 (활동시)이 사용자에 의해 축소 된 후에 만 ​​업데이트됩니다. navManager에 문제가 있습니까?

업데이트 2 : 가져 오기. map1과 map2에 navManager를 사용했습니다. 이것은 실수였습니다. 아마도 singletone이며 하나의 맵 인스턴스에서만 사용해야합니다. 액티비티를 다시 시작했을 때, 네비게이션 관리자를 캐쉬 맵에 캐쉬 한 다음 map2를 우연히 새로 고쳤습니다. 그래서 map1과 그 작품에서 네비게이션 관리자를 사용하여 제거합니다. 또한 꽤 실망스럽게도 내가 업데이트 된 문제에 모두지도 = (

+1

두지도간에 동일한 MapRoute 개체를 사용 했습니까? –

+0

네, 체크했습니다 동일한 Route 오브젝트를 사용하지만 두 개의 Map 인스턴스에 대해 두 개의 다른 MapRoute 오브젝트를 분리하여 작성했습니다.Map_1에서 일부 조작을 한 후에 만 ​​map_2에서 그려지는 여전히 MapRoute. 아니면 두 개의 Route 객체를 사용해야합니까? 아마 그지도보기에 어떤 연결도 있으면 안된다. 다른 제안들?) –

+1

괜찮을 것이다. 시스템에서 누락 된 부분은지도를 다시 그리는 것입니다. map.setZoomLevel (map.getZoomLevel())과 같은 것을 시도해보십시오; 아무 작업도하지 않지만 다시 그리기를 트리거합니다. 그게 효과적이라면 시스템은 아무 것도 바뀌지 않았다고 생각했는데, 이것은 부분적으로 사실입니다. –

답변

0

대답을위한 탐색 관리자를 사용할 수 없다는 자신의 RoadView을 작성하는 것입니다. 우리의 고객이 할의 그것은 실제로 매우 간단하고 여러 가지입니다!

탐색 관리자에 업데이트 된 위치가있을 때마다 두지도의 위치를 ​​동시에 업데이트 할 수 있습니다 .Loadview는 하나의지도 인스턴스를 구동하도록 설계되었습니다.

+0

감사합니다!, 어디서부터 시작해야할까요? 좋은 것으로 입증 된 모든 알고리즘?) 카메라가 부드럽게 작동하고 모든 퀴즈 감각을 운전자에게 편안하게 처리하려면 꽤 힘든 작업이 될 수 있습니다. –

+0

죄송하지만 좋은 생각이 없습니다. 한 손에 또는 우리의 github 페이지에 업로드 한. 이 사실을 기록하고 팀에 다른 샘플을 만들어달라고 요청하겠습니다. –

+0

고마워, 아주 좋을거야!) –