mxl*_*nge 1 javascript google-maps return function google-maps-api-3
我创建了一个函数来从地图上的一个对象绘制多个标记。每个标记也被推送到一个数组中以供稍后访问。
我的 createMarker 函数如下所示,并在 initMap 函数中调用:
function createMarker(markerData){
for(var i = 0; i < markerData.length; i++){
var testing = new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng));
console.log(testing);
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng)),
map: myMap
});
markerBounds.extend(marker.position);
markerArray.push(marker);
}
Run Code Online (Sandbox Code Playgroud)
}
但我的问题是,控制台日志只返回:
function (){return a}
Run Code Online (Sandbox Code Playgroud)
而不是预期的 lat lng 对象。所以在我的 markerArray 中也没有 lat lng 坐标。但仍会在地图上创建标记。
后来我想将markerArray中的每个标记位置与当前用户位置进行比较。但我认为这不起作用,因为上面描述的问题。
for (var i = 0; i < markerArray.length; i++) {
var markerPosition = new google.maps.LatLng(parseFloat(markerArray[i].lat), parseFloat(markerArray[i].lng));
if(google.maps.geometry.spherical.computeDistanceBetween(userPosition, markerPosition) < radius){
console.log('test');
}
}
Run Code Online (Sandbox Code Playgroud)
我对此进行了研究,但找不到答案。我得到的唯一信息是关于异步函数的。
我希望你能理解这个问题。:)
小智 5
我无法重现您的问题,但我敢打赌,您对将什么放入数组以及对象的属性有一些误解。让我澄清一下:
latandlng是 getter 函数,这意味着您应该调用,例如 position.lat() 以获取 Float 中的 Lat 坐标。position属性,它是一个 LatLng 对象。因此,如果您需要,例如标记的纬度:myMarker.position.lat()在您的代码中,您将标记放在数组中,但在计算距离时,您需要位置:
所以这是一些工作示例,我希望它有所帮助:
var myMarkerData = [{lat: -34.397, lng: 150.644}, {lat: -34.396, lng: 150.643}]
var markerArray = []
var userPosition = new google.maps.LatLng(-34.398, 150.645);
function createMarker(markerData){
for(var i = 0; i < markerData.length; i++){
var testing = new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng));
console.log(testing);
var marker = new google.maps.Marker({
animation: google.maps.Animation.DROP,
position: new google.maps.LatLng(parseFloat(markerData[i].lat), parseFloat(markerData[i].lng)),
map: map
});
//markerBounds.extend(marker.position);
markerArray.push(marker);
}
}
var map;
function initialize() {
var mapOptions = {
zoom: 8,
center: {lat: -34.397, lng: 150.644}
};
map = new google.maps.Map(document.getElementById('map'),
mapOptions);
createMarker(myMarkerData)
for (var i = 0; i < markerArray.length; i++) {
//var markerPosition = new google.maps.LatLng(parseFloat(markerArray[i].position.lat()), parseFloat(markerArray[i].position.lng()));
var markerPosition = markerArray[i].position
console.log(markerPosition,userPosition)
var distance = google.maps.geometry.spherical.computeDistanceBetween(userPosition, markerPosition)
console.log(distance)
}
}
google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1924 次 |
| 最近记录: |