zoukankan      html  css  js  c++  java
  • js 百度地图和谷歌地图的选择

    最近手上接到一个需求:

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

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

    切换中英文的时候,中文->显示百度地图,英文->能显示谷歌地图就显示谷歌地图,不能显示(报错)就显示百度地图

     

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

     

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

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

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

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

    5. 最后地图的动态加载必须放在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(){               //拉取google地图报错
                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>

     

    另外Google地图的话需要做的准备活动可能多些:

    1. 申请key

    i  进入Google官网 => https://www.google.com.hk/ ,申请一个谷歌账号(如果没有)

    ii  进入Google APIs Console页面 => https://code.google.com/apis/console/

    iii 创建项目->启用API和服务中选 Maps JavaScript API->点击启用->点击凭据tab->选择API秘钥作为凭据->生成一个API秘钥

     

    2.找地址的经纬度(以下是随便找了一个地址)

    3.参考代码

    <!DOCTYPE html>
    <html>
      <head>
        <link rel="stylesheet" href="/maps/documentation/javascript/cgc/demos.css">
      </head>
      <body>
        <div id="map"></div>
        <script>
          function initMap() {
            var myLatLng = {lat: -25.363, lng: 131.044};   //lat:经度  lng:纬度  从参考文档里查找经纬度的网站查到然后替换一下就行
            var map = new google.maps.Map(document.getElementById('map'), {
              center: myLatLng,
              zoom: 4       //zoom具体数值代表多大范围可从以下参考文档里的zoom设置网址查找即可
            });
            var marker = new google.maps.Marker({
              map: map,
              position: myLatLng,
              title: 'Hello World!'
            });
          }
    
        </script>
        <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>  //key从以上自己用google账号申请的key替换一下就行
      </body>
    </html>

      

    参考文档:

    1.google地图找经纬度
     
    2.google地图设置zoom
     
    3.google地图设置language
     
    4.生成Google地图基本例子
    https://cloud.google.com/maps-platform/maps/
     
    5.定制化开发Baidu地图
    http://api.map.baidu.com/lbsapi/creatmap/index.html
     
    6.Baidu地图的图标地址
     
    7.异步加载Baidu地图的例子
    https://blog.csdn.net/dr_yining/article/details/70475952
     
     
     

     

  • 相关阅读:
    JSP学习笔记
    Java之String、StringBuffer、StringBuilder的区别
    Android开发笔记——Handler总结
    深搜_八皇后(HDU_2553)
    广搜_优先队列和记录搜索路径(HDU_1026)
    深搜_素数环(HDU_1016)
    深搜_奇偶减枝(HDU_1010)
    转载 ASP.NET MVC学习之(5):Html.ActionLink
    启动万维网发布服务(W3SVC)
    What is POID
  • 原文地址:https://www.cnblogs.com/artimis/p/9361777.html
Copyright © 2011-2022 走看看