Javascript 地理定位api和谷歌地图中出现错误

Javascript 地理定位api和谷歌地图中出现错误,javascript,google-maps,visual-studio-2012,Javascript,Google Maps,Visual Studio 2012,我不知道我的代码出了什么问题,我已经在括号中构建了它,它工作了,但是当我进入visual studio时,它告诉我他不能用Google开发者工具更精确地读取latitude属性,我得到了这个“未捕获的类型错误:无法读取未定义的属性'latitude'” $(文档).ready(函数(){ getLocation(); }); 函数getLocation(){ if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(初始化); }否则{ x、

我不知道我的代码出了什么问题,我已经在括号中构建了它,它工作了,但是当我进入visual studio时,它告诉我他不能用Google开发者工具更精确地读取latitude属性,我得到了这个“未捕获的类型错误:无法读取未定义的属性'latitude'”


$(文档).ready(函数(){
getLocation();
});
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(初始化);
}否则{
x、 innerHTML=“此浏览器不支持地理位置。”;
}
}
函数初始化(位置){
var mapCanvas=document.getElementById('map-canvas');
var myLatLng=new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
变量映射选项={
中心:myLatLng,
缩放:18,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(mapCanvas,mapOptions);
map.set('样式'[
{
功能类型:“道路”,
elementType:“几何体”,
样式:[
{颜色:'#c4c4'},
{重量:0.6}
]
},
{
功能类型:“道路”,
elementType:'标签',
样式:[,,
{饱和:-100},
{反转亮度:假}
]
}, 
{
功能类型:“景观”,
elementType:“几何体”,
样式:[
{可见性:'在'},
{色调:'#ffffff'},
{gamma:1.4},
{饱和度:82},
{亮度:80}
]
},
{
featureType:“poi”,
elementType:“几何体”,
样式:[
{可见性:“关闭”}
]
}, 
{
功能类型:“poi.school”,
elementType:“几何体”,
样式:[
{可见性:“关闭”},
{色调:'#fff700'},
{亮度:-15},
{饱和:99}
]
}
]);
var iconBase='Images/';
var marker=new google.maps.marker({
职位:myLatLng,
图标:iconBase+'romb.png',
地图:地图
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
更新

在再次查看我的代码后,我发现了一个问题,我没有在html文档顶部使用DOCTYPE标记,但在vs2013中我使用了它,在vs2013中删除了标记后,我也删除了google呼叫线路。但现在我有另一个问题:为什么DOCTYPE标签不起作用

谢谢你的帮助,
奥雷利安

您的问题是这一行:

google.maps.event.addDomListener(window, 'load', initialize);
它不带参数调用initialize函数,并且没有latitude属性

function initialize(position){

我认为您没有将position变量传递回initialize函数。因此,当它试图获取纬度和经度属性时,它无法获取,因为位置未定义

试着改变这个

navigator.geolocation.getCurrentPosition(initialize);
对此

navigator.geolocation.getCurrentPosition(function(position) {
  initialize(position);
});

看来问题出在position.coords.latitude上。你需要给它实际的lat和lng值,这样它就可以把地图放在这些坐标的中心,所以你必须在使用它们之前设置这些属性。另一个人也指出,你初始化地图两次,每次都不通过位置。通过geolocation函数在顶部使用jquery执行一次,然后在底部再次使用gmaps示例代码。顺便说一句,如果您是作为一种后备方法执行此操作,则无需重新初始化地图。您可以使用备用纬度和经度对其初始化一次,然后尝试地理定位,如果可行,您可以使用setCenter将地图移动到其实际位置。
navigator.geolocation.getCurrentPosition(function(position) {
  initialize(position);
});