使用getCenter()

时间:2015-10-27 19:59:53

标签: javascript google-maps google-maps-api-3

编辑:这是/在实验性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错误响应和所有内容看起来过时了。)

如果您可以回答以下任何问题,那将非常有用:

  • 其他人是否面临同样的问题(或者可以重现错误)?
  • 可能导致此问题的原因(没有重大版本更改,因此它应具有向后兼容性)?
  • 报告此类错误/问题的正确位置在哪里?

2 个答案:

答案 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)中存在可能导致此问题的确认错误(有关详细信息,请参阅已接受的答案)。