这是个让人蛋疼的bug,认真查看Google maps API文档的童鞋们一定不会碰到。
我的同事为项目写了个针对map这块的jQuery plugin,然后在项目测试中发现,刚加载完页面时,直接点击map上toolbar的zoom in/out按钮或者用鼠标滚轮对地图进行放大缩小时,位置不知道偏到哪个黑暗的小角落去了。我看了丫代码半天,没发现啥问题,感觉问题是出在center的值不对,可是人家用bounds定位定得好好的,刚加载完页面时候的center也没问题啊,怎么一缩放就出问题了呢?更诡异的是,只要对地图进行过除了缩放以外的任何操作,都工作正常。谷歌一下也没有看到类似的提问或者文章。最后灵光一闪,抓到罪魁祸首。
问题就出在那位老兄在初始化init map的时候,给google.maps.Map()对象传输的参数里面只给了bounds,而没有给一个required的参数center。。。有意思的是,地图加载完了也不自己计算更新这个center的值,只有在进行过任何操作以后才更新center,此前对这个值的任何修改都有效。
也就是说你可以这么玩:
var options = {
center: new google.maps.LatLng(),
...
};
var map = google.map.Maps(options);
options.center = new google.maps.LatLng(31.838463501293745, 117.17588437182617);
地图刚加载完的时候,进行缩放就会以这个最新给的值为中心点。
记录下bug,希望能给同志们节省修bug花费的时间,时间就是金钱啊~
博客讲述了在使用Google Maps API时遇到的一个问题,即初次缩放地图时位置出现偏移。原因是初始化地图时仅提供了bounds参数,缺少required的center参数。在缩放之前对center赋值,则可以修正初始缩放的中心点,避免位置偏移。此博客旨在帮助开发者节省修复此类问题的时间。
6217

被折叠的 条评论
为什么被折叠?



