0

Я работаю над настройкой маркеров Google на карте. При поиске одной области результаты возвращают карту с маркерами ресторанов, парков и встреч. Я пытаюсь дать разные значки маркеров в зависимости от типа результата. Поэтому я добавил аргумент «type» функции addMarker (whatami) и, в зависимости от случая, должен переключиться на правильный маркер. Однако ни один из маркеров не появляется.Javascript - Различные маркеры для разных типов

maps.js:

function addMarker(latitude, longitude, title, whatami) { 

    switch (whatami) { 
     case 'park': 
     righticon = "'/assets/parkmarker.png'"; 
     break; 

     case 'rest': 
     righticon = "'/assets/restaurantmarker.png'"; 
     break; 

     case 'meetup': 
     righticon = "'/assets/meetupmarker.png'"; 
     break; 
    } 

    var markerLatlng = new google.maps.LatLng(latitude, longitude); 
    var marker = new google.maps.Marker({ 
    position: markerLatlng, 
    map: map, 
    icon: righticon, 
    title: title 
    }); 
    markers.push(marker); 
    latlng.push(markerLatlng); 
}; 

createevent.js.erb:

<% @restaurants.each do |item| %> 
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','rest'); 
<% end %> 
    <% @meetups.each do |item| %> 
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','meetup'); 
<% end %> 
    <% @parks.each do |item| %> 
    addMarker(<%= item.latitude %>,<%= item.longitude %>,'<%= item.name %>','park'); 
<% end %> 

Если я удалю заявление переключатель работает нормально. Может ли кто-нибудь определить, где я ошибаюсь?

ответ

0

опечатка на странице "/assets/parkmarker.png". удалите двойные кавычки.

+0

Ошибка. Вытащил их. – jenno

+0

проверьте URL-адреса для своих изображений. вам может быть 404. вызывается addMarker где-нибудь еще? – lfender6445

0

На первый взгляд, я бы сказал, что вы излишне удвоилась на ваши цитаты, и вы не объявили righticon в качестве переменной внутри функции, как о чем-то вроде этого:

function addMarker(latitude, longitude, title, whatami) { 
    var markerLatlng = new google.maps.LatLng(latitude, longitude); 
    var markerSettings = { 
     position: markerLatlng, 
     map: map, 
     title: title 
    } 
    // this way we still use the default marker when there is none set 
    switch (whatami) { 
     case 'park': 
     markerSettings.icon = '/assets/parkmarker.png'; 
     break; 

     case 'rest': 
     markerSettings.icon = '/assets/restaurantmarker.png'; 
     break; 

     case 'meetup': 
     markerSettings.icon = '/assets/meetupmarker.png'; 
     break; 
    } 
    var marker = new google.maps.Marker(markerSettings); 
    markers.push(marker); 
    latlng.push(markerLatlng); 
}; 
+0

Спасибо за это. В вашем коде появились мои маркеры; однако все они являются маркерами по умолчанию, предоставляемыми Google, а не моими специальными маркерами. Интересно, почему это не работает ... Вот как я устанавливаю аргументы в своем коде. Правильно ли это? addMarker (<% = item.latitude%>, <% = item.longitude%>, '<% = item.name%>', 'rest'); – jenno

+0

Я не говорю о Ruby, но если lat, long и title получат установленный OK, я не понимаю, почему строка whatami в конце не будет проходить. Как насчет того, чтобы использовать абсолютный URL для ваших изображений? – kevmc

0

Спасибо всем , Проблема заключалась в том, что маркеры вызывались в двух разных местах, и я добавлял их только к одному файлу. После добавления его к обоим работало. Глупая ошибка.

Смежные вопросы