根据距离显示/隐藏标记(使用JQuery滑块)

时间:2015-02-27 14:59:50

标签: javascript jquery google-maps google-maps-api-3 jquery-gmap3

我正在使用Gmap3(Google地图使用JQuery),我试图根据用户和其他标记的距离显示/隐藏标记(根据滑块值)

我曾尝试使用computeDistanceBetween()计算距离,但无法使其正常工作。

这是一个示例代码(js)和jsfiddle链接:

$(function(){

     var distance;

    $("#test").gmap3();

      $("#display p").empty();
      var coordinates = $("#geofenceCoords").val();
      var jsonObj = jQuery.parseJSON(coordinates); 

    //user position (Blue marker)
     var markersData = {
                    values: [
                            {
        latLng: [51.506695,-0.147950],
                                    options: {
                                        icon: "http://maps.google.com/mapfiles/kml/paddle/blu-circle.png",
                                    },
                                    data: 'aaabbb'
                                ,tag:"aaa", id:"<?php echo $id; ?>"
                                }
                            ,
                        ],
                    options:{
                        draggable: false
                    }
                };


        $("#test").gmap3({
        getlatlng:{
callback: function(results){
                        //add other markers
              var markers=[];
              $.each(jsonObj, function(i, item) {
              var marker = new Object();
                  marker.lat = jsonObj[i].latitude;
                  marker.lng = jsonObj[i].longitude;
                  marker.options = new Object();
                  marker.options.icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/marker.png");
                  markers.push(marker);
              });

$("#test").gmap3({
                marker:{
                    //add the markers
                  values: markers,
                  options: {draggable: false}
              },
              autofit:{},
            });
          }
        }              
      });

     //add the user position (blue marker)
$("#test").gmap3({
      action: 'addMarker',
      marker: markersData
},"autofit");

//slider to hide/show markers according the distance

   $("#slider").slider(
{
            range: "min",
                value: 500,
                min: 1,
                max: 1000,
            slide: function( event, ui ) {
               computedistance(ui.value);
                $( "#slider-value" ).html( ui.value );
                $( "#slider-distance" ).html( computedistanceAndHideMarkers(ui.value) );
            }
}
);

$( "#slider-value" ).html(  $('#slider').slider('value') );

function computedistanceAndHideMarkers(km){
   // var distance = google.maps.geometry.spherical.computeDistanceBetween(,km);
    //return distance;
} 

  });

以下是我目前的情况:jsfiddle

非常感谢您的帮助!

谢谢

叶兰。

1 个答案:

答案 0 :(得分:1)

您没有在小提琴中加载几何库。

显示/隐藏标记的功能可能如下所示:

function computedistance(km) {

    var //the markers
        markers = $("#test").gmap3({
          get: {
            name: "marker",

            all: true
          }
        }),
        //location of the blue marker
        user = new google.maps.LatLng(markersData.values[0].latLng[0],
                                      markersData.values[0].latLng[1]),
        //the map
        map = $("#test").gmap3({
                get: {
                  name: 'map'
                }
              });


    //iterate over the markers
    $.each(markers, function (i, m) {
         m.setMap((google.maps.geometry.spherical
                    .computeDistanceBetween(user, m.getPosition()) <= km * 1000) 
                        ? map 
                        : null);
    })

}

演示:http://jsfiddle.net/doktormolle/ahLmdLuf/