【问题标题】:filterable jquery-ui-map google map可过滤的 jquery-ui-map 谷歌地图
【发布时间】:2012-04-10 12:52:28
【问题描述】:

我需要过滤我的谷歌地图标记。现在,我在 jquery-ui-map 插件的帮助下生成了一张地图。这是我的标记:

<div id="map_canvas" class="map" style="width:100%; height:600px"></div>    
<ul id="verkaufsstellen">
    <li data-gmapping='{"id":"2","latlng":{"lat":52.4885039,"lng":13.3530732},"tags":"Salatfritz"}'>
    <div class="info-box"><div class="box-inner"><p><strong>ÄHRENSACHE</strong><br />Apostel-Paulus Str. 40 - 10823 Berlin</p><i>vertreibt: Salatfritz</i></div></div>
    </li>                       
    <li data-gmapping='{"id":"5","latlng":{"lat":52.524268,"lng":13.40629},"tags":"Bierbier"}'>
    <div class="info-box"><div class="box-inner"><p><strong>Bier, Bier Test</strong><br />Ein wunderbarer Testeintrag</p><i>vertreibt: Bierbier</i></div></div>
    </li>           
    </ul>

这就是我的 js:

if ($("#map_canvas").length){
    $('#map_canvas').gmap({'zoom':24,'scrollwheel':false,styles:[{stylers:[{lightness:7},{saturation:-100}]}],option:[{scrollwheel:false}]}).bind('init', function(ev, map) {
        $("[data-gmapping]").each(function(i,el) {
                var data = $(el).data('gmapping');
                $('#map_canvas').gmap('addMarker', {'id': data.id, 'tags':data.tags, 'position': new google.maps.LatLng(data.latlng.lat, data.latlng.lng), 'bounds':true }, function(map,marker) {
                    $(el).click(function() {
                        $(marker).triggerEvent('click');
                    });
                    }).click(function() {
                        $('#map_canvas').gmap('openInfoWindow', { 'content': $(el).find('.info-box').html() }, this);
                    });
                }); 
        });
    $('#map_canvas').gmap('find', 'markers', { 'tags': 'Salatfritz' }, function(marker, found) {
            marker.setVisible(found);
        });
}

所以 js 代码的最后一部分是我在文档中找到的,它不是那么好,或者我可能很愚蠢地想出来。

我的目标是在“标签”之后进行过滤 - 所以我需要一个简单的列表,我可以在一个链接上只显示带有这个特殊标签的标记。

也许你有一些很好的建议来完成它?

【问题讨论】:

    标签: jquery google-maps google-maps-api-3 jquery-ui-map


    【解决方案1】:
    $('#map_canvas').gmap('find', 'markers', { 'property': 'tags', 'value': 'Salatfritz' }, function(marker, found) {
                marker.setVisible(found);
            });
    

    jQuery UI Map Sample code

    【讨论】:

      【解决方案2】:

      您将标记作为字符串传递,但您必须将它们传递到数组中才能使其工作。

      假设您需要在一个实例上使用多个标签,您可以执行以下操作:

      <li data-gmapping='{"id":"2","latlng":{"lat":52.4885039,"lng":13.3530732},"tags":"Salatfritz,Bierbier"}'><!--MORE STUFF--></li>
      

      然后:

      var tagArray = data.tags.split(",");
      
      $('#map_canvas').gmap('addMarker', {'id': data.id, 'tags':tagArray, 'position': new google.maps.LatLng(data.latlng.lat, data.latlng.lng), 'bounds':true }, function(map,marker) {
      /*DO STUFF*/
      });
      

      现在您应该可以通过以下任一方式找到标记

       $('#map_canvas').gmap('find', 'markers', { 'tags': 'Salatfritz' }, function(marker, found) {
              marker.setVisible(found);
          });
      

       $('#map_canvas').gmap('find', 'markers', { 'tags': 'Bierbier' }, function(marker, found) {
              marker.setVisible(found);
          });
      

      希望有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-01
        • 2012-07-05
        • 1970-01-01
        • 1970-01-01
        • 2012-03-22
        相关资源
        最近更新 更多