2017-02-17 13 views
-1

У меня есть сценарий Google Maps в следующем формате:Google Maps скрипт в определенном формате

function initMap() 
{ 
var mapDiv = document.getElementById('map'); 
var map = new google.maps.Map(mapDiv, {center: {lat: 45.9, lng: 25.0}, zoom:7, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, disableDoubleClickZoom:true, scrollwheel:false, ...}); 

var marker = new google.maps.Marker({position: {lat:46.1, lng:25.4}, map:map, icon:'../images/Marker.png}); 
} 

Я хотел бы знать, как var marker часть сценария должен выглядеть, если бы было больше, чем один указывает на будет отображаться. Примечание: Я видел примеры JavaScript на StackExchange, которые используют массивы и т. Д. - один из лучших здесь: Google Maps Script - но я хочу, чтобы мой скрипт использовал формат выше, что очень просто.

+0

«Я видел примеры JavaScript на StackExchange, которые используют массивы, но я хочу, чтобы мой сценарий использовать формат выше , что очень просто »- я хочу использовать свои руки, чтобы открыть дверь, не используя мои руки. –

+0

@ Jared Не совсем. Я помню, что это где-то в моих файлах, но я больше не нахожу его. По крайней мере, это то, что я помню - несколько точек на карте. – Mikey

+1

Вам просто нужно повторить определение маркера для каждого дополнительного маркера. Связанный с этим вопрос: [API Карт Google v3 добавление нескольких маркеров w/info windows w/custom text] (http://stackoverflow.com/questions/16825290/google-maps-api-v3-adding-multiple-markers-w-info -windows-w-custom-text) – geocodezip

ответ

1

Класс google.maps.Marker может только создать маркер для одной точки в то время, поэтому вам потребуется какой-то способ повторить это для всех ваших точек.

Я бы сказал, что у меня есть массив объектов, каждый из которых имеет значения широты и долготы как отдельные свойства. И любые другие свойства, которые вы, возможно, захотите связать со всеми вашими точками, такими как названия и значки. например

var places = [ 
    { 
     latitude: 46.1, 
     longitude: 25.4 
     title: "Place 1", 
     icon: "blue.png" 
    }, 
    { 
     latitude: 54.1, 
     longitude: 0.0 
     title: "Place 2" 
     icon: "red.png" 
    }, 
    // etc 
]; 

Затем, когда вы хотите создать маркеры, просто цикл по массиву:

for (var i = 0; i < places.length; i++) { 
    marker = new google.maps.Marker({ 
     position: {lat:places[i].latitude, lng: places[i].longitude}, 
     title: places[i].title, 
     map: map, 
     icon: '../images/' + places[i].icon 
    }); 
} 
+0

duncan: Итак, если я правильно понял, если бы я повторил часть маркера var в вашем ответе с разными координатами, я бы получил то, что я хочу? Разве мне не нужно каждый раз использовать другое имя переменной, например marker_1, marker_2 и т. Д.? – Mikey

+0

duncan, @geocodezip: Спасибо! Он работает, если я добавляю строку маркера var с разными значениями для координат. И я снова могу использовать ту же переменную. Поскольку я генерирую их динамически в PHP/MySQL, это самая простая задача. – Mikey

+0

То же имя переменной прекрасно, если только вы не хотите делать что-то другое с каждым (в этом случае я просто верну его обратно в ваш массив для последующего использования). Он просто перезаписывает переменную каждый раз, поэтому в конце цикла «marker» просто равен самой последней. Вам даже не нужно назначать его переменной, вы можете просто «new google.maps.Marker (...)» каждый раз. – duncan