gpt4 book ai didi

javascript - 如何加载谷歌地图作为回调?

转载 作者:行者123 更新时间:2023-12-01 01:16:39 25 4
gpt4 key购买 nike

我定义了一个ajax函数,它从数据库获取一些记录,获取数据后我想加载谷歌地图,所以我将该函数作为回调传递:

get_records = function (callback) {
var postUrl = "someurl";
var postData =
{
csrfToken: "token",
};

$.post(postUrl, postData, function (response) {
callback(response);
});
};

这是回调:

get_records(function(result){
init_map();
});

init_map 所在位置:

init_map = function () {

var map;

google.maps.event.addDomListener(window, "load", function () {

map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(33.808678, -117.918921),
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP
});

var infoWindow = new google.maps.InfoWindow();

function createMarker(options, html) {
var marker = new google.maps.Marker(options);
if (html) {
google.maps.event.addListener(marker, "click", function () {
infoWindow.setContent(html);
infoWindow.open(options.map, this);
});
}
return marker;
}

var marker0 = createMarker({
position: new google.maps.LatLng(40.9117877, 14.7679659),
map: map,
icon: "../assets/img/marker-green.png"
}, "<h1 class='black-content'>Marker 0</h1><p>This is the home marker.</p>");
});

return map;
};

如果我将 init_map 函数放在 get_records 之外,则会显示 map ,但使用上面的代码却没有显示 map ,为什么?

最佳答案

如果 ajax 帖子没有响应,则永远不会调用回调。

更好的方法是使用 Promise 接口(interface):

var jqxhr = $.post("example.php", function() {
console.log("success")
}).done(function() {
// call init_map() on done?
}).fail(function() {
// call init_map() on error?
}).always(function() {
// call init_map() regardless the response?
})

此外,您还使用 google.maps.event.addDomListener 在窗口加载期间添加监听器。如果您确定页面在发布 ajax 之前已加载,则不需要此监听器。您只需在 init_map 函数内创建一个新 map 。

关于javascript - 如何加载谷歌地图作为回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54692742/

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