使用getCenter()创建GMap Lat/Lng对象时,v3.22中出现错误
Error in v3.22 while creating GMap Lat/Lng Object using getCenter()
EDIT:这是/曾经是实验版v3.22中的一个已确认错误,但是,您将要阅读的是一个非常糟糕的实现,我最终在遗留代码中发现了它
在新的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
我做了一点研究,最终发现当我在以前的版本中运行相同的代码(<=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);
}
带有v3.22的JSFiddle:https://jsfiddle.net/nsy3Lugk/1/
JSFiddle与v3.21:https://jsfiddle.net/nsy3Lugk/2/
我知道这可能应该在JS API中报告,但是,我似乎无法在中打开新问题https://code.google.com/p/gmaps-api-issues/issues/list(我在尝试提交问题时收到了400个错误的回复,所有内容看起来都过时了)。
如果你能回答以下任何一个问题,那将非常有帮助:
- 是否有其他人面临同样的问题(或者可以重现错误)
- 是什么原因导致了这个问题(没有重大的版本更改,所以它应该具有向后兼容性)
- 报告此类错误/问题的正确地点在哪里
我无法帮助解决那个特定的错误,但我只是修复了一个类似的问题。我有一个客户已经使用这个图书馆很长时间了,今天他们说他们没有地图。在本地检查完所有内容后,我从字符串数组中传递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的评论包括一个后括号,但这是正确的问题,我添加了一个评论来确认这个问题。
最终map.getCenter()
所做的是返回一个LatLng obj,因此使用另一个LatL创建一个新的LatLng obj毫无意义!
我想我最终在"它在以前的版本中起作用了!"的争论中"隧道幻想"了。
在我的例子中,该代码用于创建一个新的LatLng Obj来创建一个标记,所以我只删除了new google.maps.LatLng();
部分,并直接使用map.getCenter()
来创建标记,这应该是合乎逻辑的做法
出于某种原因,这曾经在<3.21 API,但既不是预期行为,也不是记录/支持的行为。
尽管,正如其他用户所说,实验版v3.22中存在/曾经存在一个已确认的错误(https://code.google.com/p/gmaps-api-issues/issues/detail?id=8809)这可能导致了这个问题(有关更多信息,请参阅已接受的答案)。
- YouTube API v3哈希标签搜索错误结果
- 未捕获的类型错误:无法读取属性'长度'未定义的谷歌地图V3
- 使用可排序表时出现d3.v3错误
- 谷歌地图Javascript V3未捕获类型错误:无法读取属性'offsetWidth'为null
- 谷歌地图api v3未捕获类型错误:无法读取属性'offsetWidth'为null
- 设置中心错误谷歌地图V3
- Google Maps API V3 信息窗口错误:“信息窗口未定义”
- OL3 v3.14.0 中的神秘错误消息
- 谷歌地图 api v3 - “信息窗口未定义”错误
- 谷歌地图 api v3,“对象 #<对象> 没有方法'setValues' 错误
- 递归 js v3 未捕获的类型错误:无法读取未定义的属性“配置”
- 类型错误:数字不是一个函数 - 当尝试使用谷歌地图API V3 DirectionsService时
- 错误:
属性宽度=“NaN” 6d3.v3.min.js:1 的值无效: 属性 x=“NaN” - 尝试使用谷歌 api v3 捕获我所有的 contacs:错误
- 谷歌地图api v3-IE7-main.js错误-无效参数(javascript)
- 谷歌地图v3也显示错误的方向和文本
- 谷歌地图v3:Ajax->数据库->信息窗口->错误
- Google Maps V3异步出现错误
- 使用getCenter()创建GMap Lat/Lng对象时,v3.22中出现错误
- 谷歌地图v3错误