実現したいこと
- (自己解決) yahoo map apiを使用して、map上にmarkerを設置
- markerをクリックした時にlabelを表示
前提
- @shops = Shop.where("address like ?", "%#{検索ワード}%")
- marker: 地図上のピン
- label: markerをクリックした時にポップアップされる情報(今回は店名)
試してうまくいかなかったコード
1. labelの位置がずれる
1のmarker設置まではできました。
2のlabel表示まではできましたが、labelの位置がmarkerの場所からずれており、別の場所のmarkerをクリックしても同一箇所にmarkerが上書きされてしまいます。
例えば、以下で左上のmarkerをクリックしても、labelの位置が駅に表示されてしまいます。また、別のmarkerをクリックしても、同じ場所にlabelが表示されます。
ruby
1 <script> 2 var ymap = new Y.map({...}); 3 var markers = []; 4 5 <% if @shops.present? %> 6 <% @shops.each do |shop| %> 7 var latLng = new Y.LatLng(<%= shop.lat %>, <%= shop.lng %>); 8 var marker = new Y.Marker(latLng); 9 10 marker.bind("click", function() { 11 var label = new Y.Label(latLng, "<%= shop.name %>"); 12 ymap.addFeature(label); 13 }) 14 markers.push(marker); 15 <% end %> 16 17 ymap.addFeatures(markers); 18 ymap.drawMap(new Y.LatLng(<%= @shops.first.lat %>, <%= @shops.first.lng %>), 16); 19 <% end %> 20 </script>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/11 12:50