Cordova(Phonegap)2.3.0で作成されたアプリがあります。私はJquery1.8.2とjquerymobile1.2.0とgooglemapsv3を使用しています。XCodeバージョン4.6
1つのページで、一連の座標をロードし、マップに追加されたさまざまなポリラインを作成します。マップには37のポリラインが追加されており、各ポリラインには20〜200の座標が含まれています。地図上で合計約1700の座標。私も20個のマーカーがあります。
アプリは最初から正常に動作し、ズームインとズームアウトが可能で、マップは正常に応答しますが、マップをリロードすると、XCodeで「Receivedmemory warning」などのメッセージが表示され始め、マップが更新されなくなることがあります。 crasch。
これは、更新されたデータを追加する前に呼び出すクリアルーチンです。functionclearOverlays(){
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ページに移動したときにも同じことが起こります。前後に数回移動すると、マップは更新されなくなります。他のページに移動する前に、まずクリアルーチンを呼び出します。
行われた別の簡単なテスト:マップをロードし、ポリラインと他のいくつかのマーカーを追加するだけです。数回ズームインおよびズームアウトすると、「Receivedmemorywarning」が表示されます。私は他に何もしていません。グーグルマップにズームとパンを処理させてください。
よろしくヘンリック