2013-02-18 4 views
1

나는 앱을 Cordova (Phonegap) 2.3.0으로 작성했습니다. Jquery 1.8.2 및 jquerymobile 1.2.0과 google maps v3을 사용합니다. Xcode 버전 4.6iphone phonegap google maps 메모리 경고

한 페이지에 여러 개의 좌표를로드하고지도에 다른 폴리 라인을 추가합니다. 지도에 37 개의 폴리선이 추가되었으며 각 폴리선에는 20에서 200 개의 좌표가 포함됩니다. 대략 1700 좌표가지도에 표시됩니다. 20 개의 마커도 있습니다.

앱이 처음부터 잘 작동하며 확대/축소가 가능하고지도가 잘 응답하지만지도를 새로 고침하면 XCode에서 '수신 된 메모리 경고'와 같은 메시지가 표시되기 시작하고지도가 더 이상 업데이트되지 않습니다. 때로는 응용 프로그램 crasch.

이 내 분명히 내가 업데이트 된 데이터를 추가하기 전에 호출 루틴 : 기능 clearOverlays() {

try { 

    if (polyLinesArray != null) { 
     for (var i = 0; i < polyLinesArray.length; i++) { 
      polyLinesArray[i].setMap(null); 
      polyLinesArray[i] = null; 

     } 
     polyLinesArray.length = 0; 
    } 

} 

catch(e) { 
    handleError(e, "clearOverlays"); 
} 

}가 추가 된 후에

polyLinesArray 내가 모든 폴리 라인을 밀어 배열입니다 지도에.

그럼, 어떻게하면 메모리 경고 (및 누출)를 예방할 수있는 좋은 방법으로 맵을 지울 수 있습니까?

폴리 라인에 마우스 클릭 리스너가 있습니다. 업데이트하기 전에 마우스를 눌러야합니다.

앱에서 다른 html 페이지로 이동할 때도 마찬가지입니다. 앞으로 몇 시간이 지나면지도가 더 이상 업데이트되지 않습니다. 다른 페이지로 이동하기 전에 먼저 명확한 루틴을 호출합니다.

또 다른 간단한 테스트 : 지도를로드하고 폴리 라인과 다른 마커를 추가합니다. 몇 번 확대하거나 축소하면 "Received memory warning"메시지가 나타납니다. 나는 다른 것을하지 않았으며, 단지 Google지도가 확대/축소 및 패닝을 처리하도록했습니다.

감사 헨릭

+0

비슷한 문제가 있습니다. 해결책을 찾았습니까? –

답변

0

나는 같은 문제를 가지고하고 Google지도 API는 오버레이를 그리는 방법을해야했던 것을 알아 냈다. 어떤 이유로 API 3.7 이상에서 너무 많은 메모리를 사용하게되었습니다. 운좋게도 3.12 (현재의 실험 버전)에서 이것은 다시 해결 된 것으로 보인다. 적어도 내 경우에는.

URL에 & v = 3.exp와 함께 api를 호출하면 문제가 해결 될 수도 있습니다.

관련 문제