gpt4 book ai didi

javascript - 来自数据库时 Google map 标记不工作

转载 作者:行者123 更新时间:2023-12-02 14:22:23 24 4
gpt4 key购买 nike

我开始学习 Google map 。奇怪的是,当静态声明时,标记正在工作并显示,但当它们来自数据库时,它们不会绘制在 map 上。

// var markers = [[15.054419, 120.664785, 'Device1'], [15.048203, 120.692186, 'Device 2'], [15.033303, 120.694611, 'Device 3']];
var markers = [];

我这里有完整的代码,也许我遗漏了一些东西?我什至使用了控制台日志,并成功地将所有数据从 ajax 传递到 markers 变量。

我想我在 SO 的某个地方得到了这段代码,并对其进行了修改以适合我的数据库记录调用。我希望你能帮我解决这个问题。谢谢!

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&callback=initialize"></script>
<script type="text/javascript">
var map;
var global_markers = [];
// var markers = [[15.054419, 120.664785, 'Device1'], [15.048203, 120.692186, 'Device 2'], [15.033303, 120.694611, 'Device 3']];
var markers = [];

var infowindow = new google.maps.InfoWindow({});

function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(15.058607, 120.660884);
var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

$.ajax({
type: 'GET',
url: 'control_panel/get_device_list_ajax',
success:
function (data) {
data = JSON.parse(data);
if (data['success']){
var device = data['device_list'];
device.forEach(function (dev) {
markers.push([dev['dev_geolat'], dev['dev_geolng'], dev['dev_name']]);
//console.log(markers);
});
addMarker();
} else {

}
}
});
}

function addMarker() {
console.log(markers);
for (var i = 0; i < markers.length; i++) {
// obtain the attribues of each marker
var lat = parseFloat(markers[i][0]);
var lng = parseFloat(markers[i][1]);
var trailhead_name = markers[i][2];

var myLatlng = new google.maps.LatLng(lat, lng);

var contentString = "<html><body><div><p><h2>" + trailhead_name + "</h2></p></div></body></html>";

var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: "Coordinates: " + lat + " , " + lng + " | Trailhead name: " + trailhead_name
});

marker['infowindow'] = contentString;

global_markers[i] = marker;

google.maps.event.addListener(global_markers[i], 'click', function() {
infowindow.setContent(this['infowindow']);
infowindow.open(map, this);
});
}
}

window.onload = initialize;
</script>

编辑这是我用来使用这个的 jsfiddle http://jsfiddle.net/kjy112/ZLuTg/ (感谢引导我实现这一目标的人)

最佳答案

可能与您访问ajax渲染的json的方式有关

markers.push([dev.dev_geolat, dev.dev_geolng, dev.dev_name]);

或者json内容

关于javascript - 来自数据库时 Google map 标记不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com