gpt4 book ai didi

javascript - 为什么 fusionMap.js 插件会改变 Google map 的起始位置?

转载 作者:行者123 更新时间:2023-12-02 16:47:25 24 4
gpt4 key购买 nike

所以我很长一段时间以来一直在尝试设计自定义谷歌地图(Fusion Tables)的样式。我终于找到了这个插件“fusionMap.js”,它可以让我引用一些可以更改颜色等的选项。

除了包含 jQuery 和插件之外,我唯一需要添加的代码是......

    $('#map').fusionMap({
publishedtable: 'https://www.google.com/fusiontables/embedviz?q=select+col6+from+1lIBTAqiuRK_U3PM9_8IB0fJjiyXmdPFZR5Jh5vuw&viz=MAP&h=false&lat=51.50644271284457&lng=-0.11780194013670364&t=1&z=13&l=col6&y=2&tmplt=2&hml=ONE_COL_LAT_LNG', // Link to published map
mapstyles: 'scripts/maps/paledown.js' // Path to map
});

这很棒,并且可以用于设计 map 样式,但是当我去测试此页面时, map 并未在其应有的位置开始。奇怪的是,当您访问此代码中的 URL 时,它会正确显示......

https://www.google.com/fusiontables/embedviz?q=select+col6+from+1lIBTAqiuRK_U3PM9_8IB0fJjiyXmdPFZR5Jh5vuw&viz=MAP&h=false&lat=51.50644271284457&lng=-0.11780194013670364&t=1&z=13&l=col6&y=2&tmplt=2&hml=ONE_COL_LAT_LNG

...但是 jQuery 中似乎没有任何内容可以改变位置。有谁知道它为什么会移动,或者如果这不能正常工作,有人知道另一种设计这些 map 样式的方法吗?

这是一张可爱的彩色但位置错误的 map ... http://thetally.efinancialnews.com/tallyassets/hedgefundmap/index.html

最佳答案

这是因为该插件仅适用于正坐标

来自源代码:

parseUrl: function(url){
var lat = url.match(/lat=(\d*).(\d*)/); // will only match positive numbers
this.options.lat = lat[1] + '.' + lat[2];

var lng = url.match(/lng=(\d*).(\d*)/); // will only match positive numbers
this.options.lng = lng[1] + '.' + lng[2];

var styledId = url.match(/y=(\d*)/);
this.options.styledId = parseInt(styledId[1]);

var templateId = url.match(/tmplt=(\d*)/);
this.options.templateId = parseInt(templateId[1]);

var zoom = url.match(/&z=(\d*)/);
this.options.zoom = parseInt(zoom[1]);

var column = url.match(/col+(\d*)/);
this.options.column = 'col'+column[1];

var tableid = url.match(/from\+(.+)&viz/);
this.options.tableid = tableid[1];
},

我无法在 jsfiddle 上设置示例,但为了证明我的假设,请查看以下链接,其中我将经度值替换为零(如插件“所见”)。

https://www.google.com/fusiontables/embedviz?q=select+col6+from+1lIBTAqiuRK_U3PM9_8IB0fJjiyXmdPFZR5Jh5vuw&viz=MAP&h=false&lat=51.50644271284457&lng=0&t=1&z=13&l=col6&y=2&tmplt=2&hml=ONE_COL_LAT_LNG

要解决此问题,您必须稍微调整用于提取坐标的正则表达式。只需在第一组中添加 -? 即可:

var lat = url.match(/lat=(-?\d*).(\d*)/);
this.options.lat = lat[1] + '.' + lat[2];

var lng = url.match(/lng=(-?\d*).(\d*)/);
this.options.lng = lng[1] + '.' + lng[2];

关于javascript - 为什么 fusionMap.js 插件会改变 Google map 的起始位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26992763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com