编辑:这是/在实验性v3.22中确认的错误,但是,您要阅读的是一个非常糟糕的实现,我最终在遗留代码中找到了。 < / p>
在运行以下代码的新JS v3.22 GMap API中,会产生错误:
new google.maps.LatLng(map.getCenter());
我得到的错误如下:
xb {message: "in property lat: not a number", name: "InvalidValueError", stack: "Error↵ at Error (native)↵ at new xb (https:/…ject.InjectedScript.evaluate (<anonymous>:664:21)"}
(anonymous function) @ main.js:16
M @ main.js:20
(anonymous function) @ VM744:2
InjectedScript._evaluateOn @ VM601:875
InjectedScript._evaluateAndWrap @ VM601:808
InjectedScript.evaluate @ VM601:664
我做了一些研究,最后发现当我在之前的版本(&lt; = 3.21)中运行相同的代码时,这并没有发生,例如使用:
https://maps.googleapis.com/maps/api/js?v=3.21&sensor=false
这是我的地图初始化:
<div id="map" data-latitude="" data-longitude=""></div>
function loadMap() {
var options = {
zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
scrollwheel: 1
};
map = new google.maps.Map(document.getElementById('map'), options);
var mapCenter = new google.maps.LatLng(18.48970297360103,-69.89810943603516);
map.setCenter(mapCenter,12);
}
JSFiddle with v3.22:https://jsfiddle.net/nsy3Lugk/1/
JSFiddle with v3.21:https://jsfiddle.net/nsy3Lugk/2/
我知道这可能应该在JS API中报告,但是,我似乎无法在https://code.google.com/p/gmaps-api-issues/issues/list中打开一个新问题(我在尝试提交问题时收到400错误响应和所有内容看起来过时了。)
如果您可以回答以下任何问题,那将非常有用:
答案 0 :(得分:1)
我无法解决这个具体的错误,但我刚刚解决了类似的问题。我有一个客户端已经使用这个库很长一段时间了,今天他们说他们没有得到地图。在本地检查了所有内容后,我发现我从一个String数组中传递了Lat / Lng值的元素,API在几天前才接受。
对我来说,补救措施是在new google.maps.LatLng(lat+0,lng+0)
的构造函数中为Lat和Lng添加零。
关于此问题的正确链接是https://code.google.com/p/gmaps-api-issues/issues/detail?id=8809 - @geocodezip的评论包含一个尾随括号,但这是正确的问题,我添加了评论来确认问题。
答案 1 :(得分:0)
最后map.getCenter()
做的是返回一个LatLng obj,所以使用另一个LatLng创建一个新的LatLng obj是没有意义的!
我想我最终在“它在之前的版本中工作了”中获得了“隧道视觉”!参数。
在我的情况下,代码用于创建新的LatLng Obj以创建标记,因此我只删除了new google.maps.LatLng();
部分并直接使用map.getCenter()
来创建标记,这应该是合乎逻辑的要做的事。
由于某种原因,这曾经在&lt; = 3.21 API中工作,但既不是预期的行为,也不是记录/支持的。
尽管如其他用户所述,实验性v3.22(https://code.google.com/p/gmaps-api-issues/issues/detail?id=8809)中存在可能导致此问题的确认错误(有关详细信息,请参阅已接受的答案)。