TLDR:
问题是var marker = new google.maps.Marker()行。不知何故,这是执行,并且引脚不可见,不正确或不显示。
背景:
我有一些JS使用AJAX从我当前的位置拉出最近的25家企业。查询和ajax工作正常。地图正确居中,但没有出现任何针脚。
$ .each()循环运行,并具有正确的数据。 (console.log显示名称,lat和long就好了。)
我的直觉告诉我,我遗漏了一些简单的东西,但我找不到它。
这里有什么问题?
PS。这里的执行顺序是:
getCurrentPosition向浏览器查询位置,并执行回调geo_success()
geo_success()接收corrordinates,并实例化地图。
一旦我们有了一个地图对象,我们就会使用$ .ajax()服务器的/ locations / service来获取要展示的JSON数组。
我们遍历那些创建标记以添加到地图
我稍微怀疑我将地图回调initMap()留空了,但我在开发人员的参考资料中发现了这样做的示例代码。所以,应该没问题。
以下是代码:
// Footer JS
var wpid = navigator.geolocation.getCurrentPosition(geo_success, geo_error, geo_options);
var geo_options = {
enableHighAccuracy: true,
maximumAge : 30000,
timeout : 27000
};
var latitude = 0;
var longitude = 0;
function geo_success(position) {
console.log(position.coords.latitude, position.coords.longitude);
latitude = position.coords.latitude;
longitude = position.coords.longitude;
console.log("Init map @ " + latitude + ", " + longitude);
var myCenter = {lat: latitude, lng: longitude};
var mapOptions = {
zoom: 12,
center: myCenter,
mapTypeId: 'roadmap'
};
var map = new google.maps.Map(document.getElementById('map'),
mapOptions);
counter = 0;
$.ajax({
url:'/locations/',
data: {
latitude : latitude,
longitude : longitude
},
dataType: 'json'
}).done(function(data){
$.each(data,function(i,item){
console.log("Adding pin " + i + " for: " + item.label + " @ " + item.latitude + ", " + item.longitude);
pin = new google.maps.LatLng(parseInt(item.latitude),parseInt(item.longitude));
var marker = new google.maps.Marker({
position: pin,
map: map,
type:'info'
});
})
});
}
function geo_error() {
alert("Sorry, no position available.");
}
function initMap() {
}
答案 0 :(得分:1)
我认为问题出在这一行,使用ParseFloat代替ParseInt!
替换此行
pin = new google.maps.LatLng(parseFloat(item.latitude),parseFloat(item.longitude));
使用此
{{1}}