javascript - 如何在谷歌地图上绘制多个标记?
问题描述
我正在尝试在谷歌地图上绘制多个标记,需要一些帮助。我从 ajax api 调用返回的 json 数据中获取位置的经度和纬度。
我正在按照以下帖子实现此功能,但它不起作用,我不知道为什么。 Google Maps JS API v3 - 简单的多标记示例
我认为我的一个问题是我的位置变量没有填充数组,所以当我执行 .length 时,它返回给我一个像 23 这样的数字,即使结果集中只有 3 个位置。
var locations = [];
var map;
function initMap() {
map = new google.maps.Map(document.querySelector('.map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
});
}
$.ajax({
url: api/com...
success: function (result) {
for (const row of result.payload) {
locations = 'lat: ' + row.latitude + ', ' + 'lng: ' +
row.longitude;
}
for (i = 0; i < locations.length; i++) {
console.log(locations.length);
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
data: {
name: locations[i][0]
}
});
marker.addListener('click', function() {
if(!this.infoWindow) {
this.infoWindow = new google.maps.InfoWindow({
content: this.data.name
});
}
this.infoWindow.open(map,this);
})
};
}
});
解决方案
您的代码很接近,但您的位置变量不包含您认为的数据。您需要将数字(浮点)值传递给 lat/long 参数。
尝试类似的东西;
locations = [];
for (const row of result.payload) {
locations.push({lat: row.latitude, lng: row.longitude});
}
接着;
marker= new google.maps.Marker({
position: {lat: locations[i].lat, lng: locations[i].lng},
map: map
});
带有标记数据的完整示例:
var map;
function initMap() {
map = new google.maps.Map(document.querySelector('.map'), {
center: { lat: -34.397, lng: 150.644 },
zoom: 8
});
}
$.ajax({
url: 'api/com...',
success: function (result) {
var locations = []; //need to initialise this array empty
for (const row of result.payload) {
locations.push({lat: row.latitude, lng: row.longitude, name: row.name}); //Data for name
}
for (var i = 0; i < locations.length; i++) {
console.log(locations.length);
var marker= new google.maps.Marker({
position: {lat: locations[i].lat, lng: locations[i].lng},
map: map,
data: {
name: locations[i].name //Set data here
}
});
marker.addListener('click', function() {
if(!this.infoWindow) {
this.infoWindow = new google.maps.InfoWindow({
content: this.data.name
});
}
this.infoWindow.open(map,this);
})
}
}
});
推荐阅读
- r - 如何在R中获得线性混合模型中的P值
- python - 如果字符串在行和下一行
- python - 如何根据计数器应用多个条件并使用 pandas 和 python 在 excel 中为每个条件提供输出?
- pysnmp - PySNMP:接收 V3 陷阱 - 引擎 ID
- javascript - 如何从 Firebase 的 JavaScript 查询创建复选框列表
- c# - 在哪里调用 SendMessageUpwards
- javascript - 如何在 Ruby on rails 项目中的 Javascript 中创建任务
- javascript - 无法使用“文件名:”更改“protractor-jasmine2-html-reporter”中的文件名
- django - 如何在 jenkins 控制台日志上显示 appspec 文件的日志?
- php - Jwt 身份验证问题 - 凭据无效