0

地図上の Google マーカーのカスタマイズに取り組んでいます。1 つのエリアを検索すると、結果として、レストラン、公園、ミートアップのマーカーを含むマップが返されます。結果の種類に応じて、さまざまなマーカー アイコンを表示しようとしています。そのため、addMarker 関数 (whatami) に「type」引数を追加し、場合によっては正しいマーカーに切り替える必要があります。ただし、どのマーカーも表示されません。

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 %>

switch ステートメントを削除すると、正常に動作します。誰かが私が間違っている場所を見つけることができますか?

4

3 に答える 3

0

「'/assets/parkmarker.png'」のタイプミス。二重引用符を削除します。

于 2013-05-20T03:43:03.820 に答える
0

一見すると、あなたは不必要に引用符を2倍にしていると思います.また、関数内の変数として 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);
};
于 2013-05-20T03:44:23.227 に答える
0

みんな、ありがとう。問題は、マーカーが 2 つの異なる場所で呼び出され、1 つのファイルにのみ追加したことでした。両方に追加すると、機能しました。愚かな間違い。

于 2013-05-23T15:26:08.763 に答える