$.getJSON 停止在谷歌地图 api distancematrix 中工作

Posted

技术标签:

【中文标题】$.getJSON 停止在谷歌地图 api distancematrix 中工作【英文标题】:$.getJSON stop working in google maps api distancematrix 【发布时间】:2013-12-10 21:11:02 【问题描述】:

这真的很奇怪,因为我有几个月的这段代码可以正常工作,但从上周开始我就不能再使用它了。代码总是一样的:

   $.getJSON("http://maps.googleapis.com/maps/api/distancematrix/json?origins="+origin+"&destinations="+destinations+"&mode=walking&language=es-ES&sensor=false", function(datos) 
            alert("hello");
                    // code
            
        );

我什至看不到“你好”警报。 但我可以看到 json 代码,这是一个例子:Example

那么,这可能是什么问题?

【问题讨论】:

也许您应该检查返回的错误。 ***.com/questions/1740218/… 谢谢,但我无法捕捉到错误描述...如果我使用“.fail(function(jqXHR, textStatus, errorThrown) alert('getJSON request failed!' + textStatus); )" "textStatus" 只显示单词 "error"。如果我尝试用 "$.ajax( url: 'url', dataType: 'json', error: function( data ) alert( "ERROR: " + data ); );" 来捕捉它“数据”只是显示[Object object],这在这些情况下很常见。 “errorThrown”警报“NetworkError:发生网络错误。” 【参考方案1】:

它可以工作几个月对你来说很好,但你的错误是依赖一个你不能依赖的事实。

您正在通过 javascript 请求 DistanceMatrix-Webservice,但您在文档中忽略了此注释:

希望在 JavaScript 应用程序中使用此服务?查看 Google Maps API v3 的 DistanceMatrixService 类。

Webservice 不支持 JSONP,他目前没有发送适当的Access-Control-Allow-Origin-header(这是您确实依赖的事实,并且是通过 AJAX 访问此服务所必需的,但文档没有表示将发送此标头),因此无法通过 AJAX/Javascript 可靠地请求此服务

在 google-chrome 中,控制台例如会告诉你:XMLHttpRequest 无法加载 [URL]。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“[URL]”。

【讨论】:

谢谢!但是,你推荐我用什么?距离矩阵 javascript 函数对我不起作用(它无法识别某些国家和地方来计算距离,我需要修复它)。可能我应该在 php 中使用该服务,但它可能有同样的问题。我不知道使用该服务的其他方式 我应该推荐什么?当服务没有给你想要的结果时,你必须寻找其他服务提供商 webservice 和Google Maps Javascript API v3 Directions Matrix service 应该返回相同的结果(它们使用相同的数据),如果 javascript 服务由于数据问题而无法工作,那么 Web 服务也可能无法工作.

以上是关于$.getJSON 停止在谷歌地图 api distancematrix 中工作的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌地图静态api中绘制圆形路径

在谷歌地图javascript api中 - 如何移动地图而不是标记

如何使用我的 JSON 数据在谷歌地图 API 上创建标记?

如何使用 api 在谷歌地图中仅显示一个国家或特定区域?

如何在谷歌地图 api V3 中偏移中心点

如何在谷歌地图api中创建多个信息窗口