2013-01-08 66 views
4

大家的特性“纬度”我有以下代码:遗漏的类型错误:无法读取未定义

var map; 
    var infowindow; 


    function getLocation() 
    { 
    if (navigator.geolocation) 
     { 
     navigator.geolocation.getCurrentPosition(initialize); 
     } 
    else{x.innerHTML="Geolocation is not supported by this browser.";} 
    } 

    function initialize(position) { 
    var pyrmont = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

    map = new google.maps.Map(document.getElementById('map'), { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: pyrmont, 
     zoom: 15 
    }); 

    var request = { 
     location: pyrmont, 
     radius: 500, 
     types: ['restaurant'] 
    }; 
... 

基本上我可以拿到地图的工作巨大的,如果我设定的经度/纬度坐标,而是我希望通过获取用户位置来传递这些信息。随着地图上面的代码我的手机上,但与下面的错误显示:

TypeError: 'undefined' is not an object (evaluating 'position.coords.latitude') 

,但在桌面上我没有得到任何的地图,并出现以下错误:

Uncaught TypeError: Cannot read property 'latitude' of undefined 

任何帮助将是巨大的我“M新手到Javascript和这些API

+0

不这个答案帮助 - > http://stackoverflow.com/a/3885172/572939 - 谈论增加一个超时,以确保failurecallback被称为(你还没有实施顺便说一句) – ManseUK

+0

Hiya我仍然收到错误,但地图显示我的手机,但不在桌面上。你可以看到它在行动:[http://markhaynes.me/mwp/addloc.html](http://markhaynes.me/mwp/addloc.html) –

回答

3

后面的代码,你的网页上,http://markhaynes.me/mwp/addloc.html,你打电话google.maps.event.addDomListener(window, 'load', initialize);

此CA使用Google调用initialize()函数,但它传递一个事件对象,作为参数position而不是您期望的位置对象。

+0

Hiya我设法解决它调用地理位置,而不是初始化感谢您让我走上正轨! –

1

那么它不是一个地理定位API的问题。这里的地理位置的的jsfiddle:http://jsfiddle.net/w4nvZ/3/

这里也为这里的API文档和例子:http://www.w3schools.com/html/html5_geolocation.asp

谷歌甚至有地理位置与JavaScript的谷歌地图API的工作的一个例子:https://google-developers.appspot.com/maps/documentation/javascript/examples/map-geolocation

var map; 
function initialize() { 
var mapOptions = { 
zoom: 6, 
mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 
map = new google.maps.Map(document.getElementById('map_canvas'), 
mapOptions); 
// Try HTML5 geolocation 
if(navigator.geolocation) { 
navigator.geolocation.getCurrentPosition(function(position) { 
var pos = new google.maps.LatLng(position.coords.latitude, 
position.coords.longitude); 
var infowindow = new google.maps.InfoWindow({ 
map: map, 
position: pos, 
content: 'Location found using HTML5.' 
}); 
map.setCenter(pos); 
}, function() { 
handleNoGeolocation(true); 
}); 
} else { 
// Browser doesn't support Geolocation 
handleNoGeolocation(false); 
} 
} 
function handleNoGeolocation(errorFlag) { 
if (errorFlag) { 
var content = 'Error: The Geolocation service failed.'; 
} else { 
var content = 'Error: Your browser doesn\'t support geolocation.'; 
} 
var options = { 
map: map, 
position: new google.maps.LatLng(60, 105), 
content: content 
}; 
var infowindow = new google.maps.InfoWindow(options); 
map.setCenter(options.position); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 
+0

感谢您的链接,我将阅读。 –

相关问题