通过轨道

时间:2015-12-18 19:19:05

标签: javascript jquery ruby-on-rails ajax google-maps

我有一个搜索页面,其中一侧显示列表,另一侧显示他们在地图上的位置。所以现在显示多个标记..但现在我改变搜索使用ajax。现在列表正确显示。但我无法使标记生效。有人能告诉我如何通过ajax更新标记? 提前谢谢??

search.html.erb

    <div class="row">
      <div class="col-md-4 hidden-xs">

        <div id="sidebar">
          <div id="widget" class="sticky">
            <script>
              function initialize() {
                var mapCanvas = document.getElementById('widget');
                var mapOptions = {
                  <% if @arrRooms.length > 0 %>
                  center: new google.maps.LatLng(<%= @arrRooms[0].latitude %>, <%= @arrRooms[0].longitude %>),
                  <% else %>
                  center: new google.maps.LatLng(44.5403, -78.5463),
                  <% end %>
                  zoom: 14,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                }
                var map = new google.maps.Map(mapCanvas, mapOptions)

                <% @arrRooms.each do |room| %>

                var marker = new MarkerWithLabel({
                  position: new google.maps.LatLng(<%= room.latitude %>, <%= room.longitude %>),
                  title: "RoomDuck",
                  labelContent: "<%= room.price %>",
                  map: map,
                  labelAnchor: new google.maps.Point(20, 43),
                  labelClass: "labels", // the CSS class for the label
                  labelInBackground: false,
                  icon: pinSymbol('red')
                });
                marker.setMap(map);
                <% end %>
              }
              google.maps.event.addDomListener(window, 'load', initialize);
              function pinSymbol(color) {
                return {
                  path: 'M 0,0 C -2,-20 -10,-22 -10,-30 A 10,10 0 1,1 10,-30 C 10,-22 2,-20 0,0 z',
                  fillColor: color,
                  fillOpacity: 1,
                  strokeColor: '#000',
                  strokeWeight: 1,
                  scale: 1
                };
              }

            </script>
          </div>
        </div>
      </div>
 <div class="col-md-8">
        <div class="row">
          <div class="col-md-12">
            <hr>
            <div id="listings">
              <%= render 'pages/listings' %>
            </div>
          </div>

        </div>
      </div>

search.js.erb

$("#listings").html("<%= j render("pages/rooms") %>")

_rooms.html.erb

<div class="row">
  <div class="col-md-4">Sort By:</div>
  <div class="col-md-4 ajax_link"><%= sort_link @search, :price, "Price"%></div>
  <div class="col-md-4 ajax_link"><%= sort_link @search, :distance, "Distance"%></div>
</div>
<hr>
<div class="row">
  <% @arrRooms.each do |room| %>

      <div class="col-md-6">
        <div class="panel panel-default custom-hover">
          <%= link_to room do %>
              <div class="panel-heading preview">
                <%= image_tag room.photos[0].image_url(:original), style: "width: 100%" %>
              </div>
              <div class="panel-body custom-line-control text-center">
                <%= room.listing_name %><br>
              </div>
          <% end %>
        </div>
      </div>

  <% end %>
</div>

1 个答案:

答案 0 :(得分:0)

您必须使用新数据刷新地图,清除所有标记:markers[i].setMap(null);(有关https://developers.google.com/maps/documentation/javascript/examples/marker-remove的更多信息,并使用新数据重新创建标记数组,就像之前一样。< / p>