这是个让人蛋疼的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花费的时间,时间就是金钱啊~