Javascript 我的谷歌地图不';不要加载所有位置

Javascript 我的谷歌地图不';不要加载所有位置,javascript,jquery,google-maps,google-maps-api-3,markerclusterer,Javascript,Jquery,Google Maps,Google Maps Api 3,Markerclusterer,我有一个谷歌地图,“应该”加载位置并将它们添加到我的谷歌地图 如果它们根据缩放级别彼此接近,则还应将它们添加到簇中 我的问题是它似乎并没有把它们全部装进去。似乎没有任何错误 有人能帮忙吗 var位置=[{ 拉丁美洲:55.674971, 液化天然气:12.580891 }, { 拉丁美洲:55.674971, 液化天然气:12.4 }, ] $(文档).ready(函数(){ 代码地址(“Odense”); 代码地址(“Viborg”); 代码地址(“哥本哈根”); 代码地址(“Herning

我有一个谷歌地图,“应该”加载位置并将它们添加到我的谷歌地图

如果它们根据缩放级别彼此接近,则还应将它们添加到簇中

我的问题是它似乎并没有把它们全部装进去。似乎没有任何错误

有人能帮忙吗

var位置=[{
拉丁美洲:55.674971,
液化天然气:12.580891
},
{
拉丁美洲:55.674971,
液化天然气:12.4
},
]
$(文档).ready(函数(){
代码地址(“Odense”);
代码地址(“Viborg”);
代码地址(“哥本哈根”);
代码地址(“Herningvej9,8330 Brande”);
代码地址('Vestergade 249510 Arden');
代码地址('Horsens')
代码地址(“Ove Jensen Alle”)
})
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:5,
minZoom:5,
中心:{
拉脱维亚:56.26392,
液化天然气:9.501785
}
});
//创建用于标记的字母字符数组。
var标签='abcdefghijklmnopqrstuvxyz';
var markers=locations.map(函数(位置,i){
返回新的google.maps.Marker({
位置:位置,,
标签:标签[i%标签.长度]
});
});
//添加标记群集器以管理标记。
var markerCluster=新的MarkerClusterer(地图、标记、{
imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
});
}
函数代码地址(地址){
$.ajax({
url:“https://maps.googleapis.com/maps/api/geocode/json?address=“+地址+”&key=AIzaSyC6B-a580ktINp36CTzg6x_btYI8e_44r8”,
成功:功能(数据){
//console.log(“lat:+data.results[0].geometry.location.lat+”lng:+data.results[0].geometry.location.lng+”address=“+address”);
位置。推({
“lat”:data.results[0].geometry.location.lat,
“lng”:data.results[0]。geometry.location.lng
})
},
错误:函数(数据){
}
})
}
$(文档).ready(函数(){
函数重载标记(){
//循环遍历标记,并将每个标记的映射设置为null
对于(var i=0;i
#地图{
高度:300px;
宽度:300px;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}

您的问题是由于Ajax调用(在
codeAddress
中)获取标记坐标的异步性质造成的。创建
新MarkerClusterer(映射,标记,{…})
时,标记的完整列表可能不完整

由于不建议进行同步调用,因此需要确保在所有
codeAddress
ajax调用完成后创建(或更新)标记集群。一种解决方案是跟踪变量
ajax\u completed
中已完成的ajax请求的数量,并将其与标记的总数进行比较

我对您的代码进行了一些修改,以演示如何操作

var位置=[{
拉丁美洲:55.674971,
液化天然气:12.580891
},
{
拉丁美洲:55.674971,
液化天然气:12.4
},
];
var ajax_completed=0;
var ajax需求=12;
var标记;
var-markerCluster;
var映射;
var标签='abcdefghijklmnopqrstuvxyz';
$(文档).ready(函数(){
代码地址(“Odense”);
代码地址(“Viborg”);
代码地址(“哥本哈根”);
代码地址(“Herningvej9,8330 Brande”);
代码地址('Vestergade 249510 Arden');
代码地址(“霍森斯”);
代码地址(“Ove Jensen Alle”);
代码地址(“奥胡斯”);
代码地址(“汉堡”);
代码地址(“奥尔堡”);
代码地址(“Skive”);
代码地址(“Herning”);
})
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:5,
minZoom:5,
中心:{
拉脱维亚:56.26392,
液化天然气:9.501785
}
});
//现在添加markers集群是没有意义的,因为ajax请求还没有全部完成
log(“完成的请求数:”,ajax_completed);
}
函数代码地址(地址){
$.ajax({
url:“https://maps.googleapis.com/maps/api/geocode/json?address=“+地址+”&key=AIzaSyC6B-a580ktINp36CTzg6x_btYI8e_44r8”,
成功:功能(数据){
位置。推({
“lat”:data.results[0].geometry.location.lat,
“lng”:data.results[0]。geometry.location.lng
})
},
错误:函数(数据){},
完成:函数(){
ajax_++;
如果(ajax\u completed==ajax\u requs\u len){
//如果所有ajax请求都已完成
log(“所有请求已完成:”,ajax_已完成);
标记=位置.map(函数(位置,i){
返回新的google.maps.Marker({
位置:位置,,
标签:标签[i%标签.长度]
});
});
markerCluster=新的MarkerClusterer(地图、标记、{
imagePath:'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
});
}
}
})
}
#地图{
高度:300px;
宽度:300px;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}

地理编码器响应您的所有位置,并在make上渲染标记。这段代码有最大的能力来呈现多个标记和集群。绑定地图是一个选项,因为你不想让它成为评论

$('#map').height(window.innerHeight);
var-map=[];
map.Init=null;
map.map=null;
map.MapObj=null;
map.MarkerLoad=[];
map.Markers=null;
map.location=null;
map.locationData=[];
map.Request=null;
map.cluster=null;
map.bound=null;
map.boundObj=null;
map.geocoder=新的google.maps.geocoder();
map.locationData=[
“欧登塞”,
“维堡”,
“哥本哈根”,
“Herningvej98330 Brande”,
“Vestergade 249510 Arden”,
“霍森斯”,
“爱詹森阿勒”
];
map.Init=函数(){
map.map();
map.location();
//绑定谷歌地图的选项方法