我正在使用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
非常感谢您的帮助!
谢谢
叶兰。
答案 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);
})
}