4

マップ上に複数の注釈がありますが、ユーザーがそれらを表示するにはスクロールする必要がある場合があります。ユーザーがボタンを選択して、すべてを地図上に収めることができるようにしたいのです。スクロールしたり、手動でサイズを変更したりする必要がありません。

最小値を決定しました。と最大。地図上に表示したいポイントの緯度と経度(例:minLat、maxLat、minLong、maxLong)。

ただし、経度と緯度のプロパティをmapview.setLocationに渡すために使用する特定の式で苦労しています。どの式を使用できるかについての指針はありますか?

4

1 に答える 1

7

同じ要件の関数を作成しました。テストして、エラーが発生した場合はお知らせください。

function setMarkersWithCenter(map,latiarray,longiarray)
{
    if(latiarray.length != longiarray.length)
        return;
    var total_locations = latiarray.length;
    var minLongi = null, minLati = null, maxLongi = null, maxLati = null;
    var totalLongi = 0.0, totalLati = 0.0;

    for(var i = 0; i < total_locations; i++) 
    {
        if(minLati == null || minLati > latiarray[i]) {
            minLati = latiarray[i];
        }
        if(minLongi == null || minLongi > longiarray[i]) {
            minLongi = longiarray[i];
        }
        if(maxLati == null || maxLati < latiarray[i]) {
            maxLati = latiarray[i];
        }
        if(maxLongi == null || maxLongi < longiarray[i]) {
            maxLongi = longiarray[i];
        }
    }

    var ltDiff = maxLati-minLati;
    var lgDiff = maxLongi-minLongi;
    var delta = ltDiff>lgDiff ? ltDiff : lgDiff;
    if(total_locations>0 && delta>0)
    {
        map.setLocation({
            animate : true,
            latitude:((maxLati+minLati)/2),
            longitude:((maxLongi+minLongi)/2),
            latitudeDelta:delta,
            longitudeDelta:delta,
        }); 
    }

}

それが役に立てば幸い。

于 2012-05-28T13:24:57.620 に答える