百度地图和谷歌地图的选择

Posted artimis

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度地图和谷歌地图的选择相关的知识,希望对你有一定的参考价值。

最近手上接到一个需求:

国外的域名访问,显示谷歌地图

国内的域名访问,显示百度地图

切换中英文的时候,中文显示百度地图,英文能显示谷歌地图就显示谷歌地图不能显示就显示百度地图。

 

因此我必须根据场景动态的切换两个地图=>也就是动态的加载两个地图的js

 

首先我们的项目是部署在https上,因此不论我是加载百度地图还是谷歌地图都必须以https的形式;

其次谷歌地图的经纬度的计算需要自己去找网址去查;

再次百度地图的动态加载需要添加callback参数才可以支持;

再其次谷歌地图的动态加载失败事件不走ajax的error方法,经百度浏览器只会选择“静静的失败”;

最后地图的动态加载必须放在onload方法里而不是ready方法里等等

真的是步步维艰。

 

也是在网上查阅了很多资料才慢慢解决。

以下是最终代码:

<script>
    function loadBaiduScript() {
        let script = document.createElement("script");
        script.src = ‘https://api.map.baidu.com/api?v=2.0&ak=qWmCfqDAdPBzy3YoHxGnimKT&s=1&callback=getBaiduMap‘;
        document.body.appendChild(script);
    }

    function getBaiduMap(){
        $.getScript(‘js/map_baidu.js‘)
    }

    function loadGoogleScript(){
        let script = document.createElement("script");
        script.src = ‘https://maps.googleapis.com/maps/api/js?key=AIzaSyA-EyYveZrg9ipdZIcugx9-P4PZWLjxVmw&callback=getGoogleMap‘;
        document.body.appendChild(script);
        script.onerror=function(){
            document.body.removeChild(script);
            loadBaiduScript();
        }
    }

    function getGoogleMap(){
        $.getScript(‘js/map_google.js‘)
    }


    window.onload = function(){
        let lang = navigator.language;
        if(lang=="zh-CN" || lang==‘zh‘){
            loadBaiduScript()
        }else{
            loadGoogleScript()
        }
    };
</script>

  

参考文档:

1.google地图找经纬度
 
2.google地图设置zoom
 
3.google地图设置language
 
4.百度地图的图标不显示
 
5.异步加载百度地图
https://blog.csdn.net/dr_yining/article/details/70475952
 

 

以上是关于百度地图和谷歌地图的选择的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 和谷歌地图上的不同距离

使用片段的谷歌地图

Angular 9 和谷歌地图标记点击事件无法正常工作

谷歌地图和谷歌位置自动完成冲突

如何用经纬度查地点?

Laravel 和谷歌地图:foreach 纬度/经度显示标记或地图