Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用getCenter()创建GMap Lat/Lng对象时在v3.22中出错_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 使用getCenter()创建GMap Lat/Lng对象时在v3.22中出错

Javascript 使用getCenter()创建GMap Lat/Lng对象时在v3.22中出错,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,EDIT:这是/曾经是实验版v3.22中确认的错误,但是,您将要阅读的是一个非常糟糕的实现,我最终在遗留代码中发现了它。 在新版本中,运行以下代码会产生错误: new google.maps.LatLng(map.getCenter()); 我得到的错误如下: xb {message: "in property lat: not a number", name: "InvalidValueError", stack: "Error↵ at Error (native)↵ at ne

EDIT:这是/曾经是实验版v3.22中确认的错误,但是,您将要阅读的是一个非常糟糕的实现,我最终在遗留代码中发现了它。

在新版本中,运行以下代码会产生错误:

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
以下是我的地图初始化:

<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);
}

函数loadMap(){
变量选项={
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:true,
滚轮:1
};
map=new google.maps.map(document.getElementById('map'),选项);
var mapCenter=new google.maps.LatLng(18.48970297360103,-69.89810943603516);
地图中心(地图中心,12);
}
带v3.22的JSFIDLE:

带v3.21的JSFIDLE:

我知道这可能应该在JSAPI中报告,但是,我似乎无法在中打开新问题(我在尝试提交问题时收到400个错误响应,并且那里的所有内容看起来都过时了)

如果你能回答以下任何一个问题,那将非常有帮助:

  • 是否有其他人面临同样的问题(或可以重现错误)
  • 是什么导致了这个问题(没有重大的版本更改,所以应该具有向后兼容性)
  • 报告此类错误/问题的正确位置在哪里

    • 我无法帮助解决这个特定错误,但我刚刚修复了一个类似的问题。我有一个客户已经使用这个库很长时间了,今天他们说他们没有地图。在本地检查完所有内容后,我将从字符串数组中传递元素以获取Lat/Lng值,直到几天前API才接受该值

      我的补救办法是在
      新的google.maps.LatLng(Lat+0,Lng+0)
      的构造函数中为Lat和Lng添加零


      关于这个问题的正确链接是,@geocodezip的注释包含一个后括号,但这是正确的问题,我添加了一条注释来确认这个问题。

      最后
      map.getCenter()
      所做的是返回一个LatLng obj,因此使用另一个LatLng创建一个新的LatLng obj没有意义

      我想我在“它在以前的版本中工作!”的争论中结束了“隧道设想”

      在我的例子中,代码被用来创建一个新的LatLng Obj来创建一个标记,所以我只是删除了
      新的google.maps.LatLng()
      part并直接使用
      map.getCenter()
      创建标记,这应该是合乎逻辑的事情


      出于某种原因,这在问题跟踪程序中可能相关的问题中起作用[issue 8809:(Maps API V3)不再接受空值新的google.Maps.LatLng()[您如何设置地图的中心?有两个必需的参数“中心”和“缩放”。您是对的@geocodezip,我忽略了初始化的这一部分。请参阅我的编辑。此外,使用搜索动态更改中心,但是,这一部分并不重要,因为在v3.22中,它在搜索集之后或与初始化和在v3.21中它都可以工作(通过初始化和endsup设置中心的搜索)。@geocodezip问题似乎是map.getCenter()在v3.22中生成了一个不同的对象。考虑到它只是一个补丁版本的更改(甚至不是e MINOR版本),这非常奇怪.问题追踪器上的相关问题:.v3.22当前是实验版本,功能不稳定,可以随时更改或中断。感谢您的输入!该链接非常有用,但问题似乎在地图中。getCenter()这会产生不同的结果。在引用的bug报告中,Google确认他们刚刚通过删除对对象的支持而打破了当前的实验版本。我猜这将在生产之前得到修复。解决方案是在下一个版本发布之前,使用
      v=3.20
      指定您想要的库的版本生产。是的!我已经在使用v3.21,这解决了生产中的问题,我只是想确保v3.22发布后不会出现问题。最后,在我的情况下,从另一个LatLng创建一个新的LatLng Obj没有任何意义(甚至没有文档记录)。因为这个原因,我更喜欢使用getCenter()直接:)!不管怎样,你的答案很有帮助,所以我将对其进行升级投票。感谢你对我的答案进行升级投票,但将你自己的答案标记为已接受。使用GetCenter是可以的。这不是问题所在。问题是版本更改,导致有效代码失败。你的三个问题都已在此处得到回答。
      <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);
      }