Google地图API V3 fitBounds()不起作用
我想在谷歌地图上调用fitBounds()
,以便用户可以看到他们自己相对于选定标记/位置的位置。
这是我处理这个问题的函数:
var fitMapToShowResult = function(index){
var hereLatLng = new google.maps.LatLng (lat,lng); //location of the user defined outside this func
var firstResultLatLng = new google.maps.LatLng(
$scope.searchResults[index].geometry.location.k,
$scope.searchResults[0].geometry.location.B
);
var latlngList = new Array( hereLatLng, firstResultLatLng ); // latlng: an array of instances of GLatLng
var latlngbounds = new google.maps.LatLngBounds();
for (var i=0;i<latlngList.length;i++){
latlngbounds.extend(latlngList[i]);
console.log('latlngbounds',latlngbounds);
}
//$scope.map.setCenter(latlngbounds.getCenter());
$scope.map.fitBounds(latlngbounds);
};
它大约80%的时间完美运行。 但大约1/5的标记完全不在视野范围内,变焦太高而无法同时看到两个点。 我究竟做错了什么?
我的地图使用自定义标记可能是相关的。
为了协助调试,我添加了这个代码来绘制地图上的边界...
rect = new google.maps.Rectangle( {bounds: latlngbounds, map: $scope.map} );
它总是看起来非常适合第一对夫妇的结果:
但往往这是不正确的: 请注意,在每个不正确的情况下,看起来矩形的其中一个尺寸(高度/宽度)是正确的,但另一个不是。 我的直觉告诉我这是相关的。
综述类似的问题
我知道这是一个很受欢迎的问题,但我已经审查了其他所有问题,而我的问题似乎并不是它们中的任何一个的重复。 希望这个储备对未来的问题解决者有用,但是这些都不能解决我的问题。
谷歌地图V3 fitBounds不准确无用的问题,没有代码,没有答案
Google Maps API v3 - fitBounds只居中一个标记用户在没有意识到的情况下重新定义循环内部。
在Google Maps API V3和Google Maps API V3中使用fitBounds()后,使用setZoom()fitbounds()会缩小但不会放在&Google地图中,fitBounds不会放大fitBounds()异步发生,所以下游动作需要包装在eventListener中。
谷歌地图→fitBounds手动用户传递不正确的类型参数LatLngBounds
(应该是两个google.maps.LatLng
s)
谷歌地图fitBounds()被打破或..? &Google maps API V3方法fitBounds()构建带有.extend()
坐标的google.maps.LatLngBounds
(而不是将其保留为空并使用.extend()
)
试图让谷歌地图fitbounds工作超级noob没有意识到javascript方法是区分大小写的
谷歌地图V3自定义标记图像和fitBounds() fitBounds()
按预期工作,但用户需要为bug自定义标记fitBounds()
更多空间
适用于可见标记的Google Maps V3 fitBounds关于如何使用fitBounds()
... rtfm的简单问题
Google Maps API V3 - fitBounds随机播放,但偶尔会忽略海洋中的边界和负载在编写时没有答案。 听起来像无效的拉特/ lng对。
不要使用这些值作为geometry.location.**k**
,它取决于最小化的文件(使用MinifyJS之类的工具),那么当谷歌发布一个新版本时它会改变。
Upsidown先生是对的。 我的边界框是错误的,因为我直接引用....geometry.location.k
而不是LatLng
对象。 重构代码相应地纠正了这个问题。