Лучший способ использования одного массива точек для заполнения нескольких карт Google - PullRequest
1 голос
/ 10 января 2012

Есть ли более эффективный способ сделать следующее?Это всего лишь пример, всего имеется более десяти различных карт.

Специальная итерация, поэтому мне не нужно делать это отдельно для каждой карты?

У меня есть массив javascript, который я хочуотобразить на несколько карт Google в зависимости от графства / совета

например.

var locations [
['Shaws Bay - East', 'Far North Coast', 'Ballina Shire Council', -28.86, 153.58],
['Shelly Beach', 'Far North Coast', 'Ballina Shire Council', -28.86, 153.59],
['The Serpentine', 'Far North Coast', 'Ballina Shire Council', -28.86, 153.57],
['Tallow Beach', 'Far North Coast', 'Byron Shire', -28.64, 153.63],
['Wategos Beach', 'Far North Coast', 'Byron Shire', -28.63, 153.63],
['Clarkes Beach', 'Far North Coast', 'Byron Shire', -28.64, 153.62],
['Main Beach (Byron Bay)', 'Far North Coast', 'Byron Shire', -28.64, 153.61]
//much, much more 
];

У меня это работает, используя это:

//byron shire   
map = new google.maps.Map(document.getElementById('map_canvas'), {
    zoom: 12,
    center: new google.maps.LatLng(-28.59, 153.56),
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
    var eyetwo = locations[i][2];
    if (eyetwo == "Byron Shire") {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][3], locations[i][4]),
            map: map
        });
    }
}
//ballina shire  
map2 = new google.maps.Map(document.getElementById('map_canvas2'), {
    zoom: 12,
    center: new google.maps.LatLng(-28.83, 153.57),
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
for (i = 0; i < locations.length; i++) {
    var eyetoo = locations[i][2];
    if (eyetoo == "Ballina Shire Council") {
        marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][3], locations[i][4]),
            map: map2
        });
    }
}
//others too

Спасибо за вашпомощь

1 Ответ

0 голосов
/ 10 января 2012

Просто поместите цикл for в повторяющуюся часть кода. Всегда используйте массив для ваших данных. Примерно так (не проверено):

for (var i = 0; i < locations.length; i++) {
    map = new google.maps.Map(document.getElementById('map_canvas' + i), {
        zoom: 12,
        center: new google.maps.LatLng(locations[i][3], locations[i][4]),
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i][3], locations[i][4]),
        map: map
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...