谷歌地图 api 不再工作
Posted
技术标签:
【中文标题】谷歌地图 api 不再工作【英文标题】:google map api not working anymore 【发布时间】:2014-11-24 14:43:51 【问题描述】:这段代码直到今天都运行良好:
navigator.geolocation.getCurrentPosition(
function (pos)
var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
console.log('ok');
geocoder = new google.maps.Geocoder();
geocoder.geocode('latLng': latlng, function (results, status)
console.log('callback');
console.log(status);
);
,
errorGetCurrentPositionCallback,
enableHighAccuracy: true, timeout: 10000, maximumAge: 600000);
我可以在控制台中看到“ok”消息,但看不到“callback”。完全没有错误,我使用了 0% 的配额。有些东西发生了变化,但在我的代码中没有。不再到达 console.log。你有什么想法吗?
【问题讨论】:
【参考方案1】:您的函数会检查导航器是否可以找到 GPS 位置(这纯粹是设备/浏览器功能;不是 Google 服务)。 但是您的函数不会检查地理编码器的状态(这是一项 Google 服务)。
看看你的控制台是这样的:
navigator.geolocation.getCurrentPosition(
function (pos)
var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
console.log('Just before geocode is called');
geocoder = new google.maps.Geocoder();
geocoder.geocode('latLng': latlng, function (results, status)
console.log('callback of geocoder called');
if (status == google.maps.GeocoderStatus.OK)
console.log('Status is okay');
else
console.log('Status is not okay, the reason: ' + status);
);
,
errorGetCurrentPositionCallback,
enableHighAccuracy: true, timeout: 10000, maximumAge: 600000
);
这是一个有效的例子
<script src="http://maps.googleapis.com/maps/api/js"></script>
<script type="text/javascript">
var map;
function initialize()
var latlng = new google.maps.LatLng(50.45, 4.45); // set your own default location. This gets called if the parameters are left blank.
var myOptions =
zoom: 15,
center: latlng
;
map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);
function errorGetCurrentPositionCallback()
console.log('Your device cannot find your location');
// initiate Google Maps + request the position of the user.
function page_loaded()
initialize();
navigator.geolocation.getCurrentPosition(
// success callback
function (pos)
var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
var accuracy = pos.coords.accuracy;
map.setCenter(latlng);
var marker = new google.maps.Marker(
position: latlng,
map: map,
title: "You are here! (at least within a " + accuracy + " meter radius)"
);
console.log('Just before geocode is called');
geocoder = new google.maps.Geocoder();
geocoder.geocode('latLng': latlng, function (results, status)
console.log('callback of geocoder called');
if (status == google.maps.GeocoderStatus.OK)
console.log('Status is okay; you have the address of this location');
//
else
console.log('Status is not okay, the reason: ' + status);
);
,
errorGetCurrentPositionCallback,
enableHighAccuracy: true, timeout: 10000, maximumAge: 600000
);
google.maps.event.addDomListener(window, 'load', page_loaded);
</script>
<style>
#map-canvas
width: 500px;
height: 400px;
</style>
<div id="map-canvas"></div>
【讨论】:
您好,谢谢您的回答,但它是我故意省略的“除了检查状态”相同的代码(对示例无用)。问题是没有到达“console.log('callback called')”行。所以之后检查状态是没有用的。出了点问题,但不在代码中。你有想法吗 ?有没有api的源代码? 我应该更彻底地检查一下。顺便说一句,您是否在 errorGetCurrentPositionCallback 中记录了一些内容?有什么有趣的吗? 不,我在 errorGetCurrentPositionCallback 中什么都没有。我认为回调没有在谷歌代码中触发。但为什么呢? 我添加了一个功能示例 我发现了错误。我已经覆盖了 eval 函数,谷歌正在使用它。所以现在它又开始工作了。谢谢以上是关于谷歌地图 api 不再工作的主要内容,如果未能解决你的问题,请参考以下文章