나는 앱을 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지도가 확대/축소 및 패닝을 처리하도록했습니다.
감사 헨릭
비슷한 문제가 있습니다. 해결책을 찾았습니까? –