zoukankan      html  css  js  c++  java
  • 谷歌地图 API 开发之获取坐标以及街道详情

    自己的项目中有获取当前点击的坐标经纬度或者获取当前街道的信息的需求。
    估计这个对于新手来说,还是比较麻烦的,因为从官网上找这个也并不是很好找,要找好久的,运气好的可能会一下子找到。

    献上自己写的测试案例。代码如下:

    <!DOCTYPE html>
    <html>
    
    <head>
        <title>Simple Map</title>
        <meta name="viewport" content="initial-scale=1.0">
        <meta charset="utf-8">
        <style>
            html,
            body {
                height: 100%;
                margin: 0;
                padding: 0;
            }
            
            #map {
                height: 100%;
            }
        </style>
    </head>
    
    <body>
        <div id="map"></div>
        <script>
            function initMap() {
                var myLatlng = {
                    lat: 39.921323,
                    lng: 116.426239
                };
                var marker ;
                var markersArray = [];
                var map = new google.maps.Map(document.getElementById('map'), {
                    zoom: 12,
                    center: myLatlng
                });
                // ---- Google隐藏 ----
                var isFirstLoad=true;
                //地图瓦片加载完成之后的回调
                google.maps.event.addListener(map, 'tilesloaded', function () {
                if (isFirstLoad) {
                        hideLogo();
                        isFirstLoad=false;
                    }   
                });
                function hideLogo() {
                    $("#map .gm-style-cc").hide();
                    $("#map [title='点击以在 Google 地图上查看此区域']").hide(); 
                }
                // ---- Google隐藏 ----
                map.addListener('click', function(e) {
                    addMarker(e.latLng, map);
                    //根据经纬度获取 当前地理信息
                    var latLngData = e.latLng.lat().toFixed(6)+','+e.latLng.lng().toFixed(6);
                    console.log(latLngData)
                    $.ajax({
                        type:"post",
                        url:"https://maps.googleapis.com/maps/api/geocode/json?latlng="+latLngData+"&location_type=ROOFTOP&result_type=street_address&key=AIzaSyC8IXpNgfA7uD-Xb0jEqhkEdB7j3gbgOiE",
                        async:true,
                        success:function(data){
                            console.log(data)
                            var site = latLngData+'<br />'+data.results[0].formatted_address;
                            console.log(site)
                            var infowindow = new google.maps.InfoWindow({
                                content: site
                            });
                            infowindow.open(map,marker); //弹出信息提示窗口
                        }
                    });
                    
                });
                //添加坐标对象
                function addMarker(latLng, map) {
                    if(markersArray.length>0){
                            markersArray[0].setMap(null);
                    };
                    markersArray.shift(marker)
                    marker = new google.maps.Marker({
                        position: latLng,
                        map: map
                    });
                    markersArray.push(marker);
                }
            }
        </script>
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
        <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC8IXpNgfA7uD-Xb0jEqhkEdB7j3gbgOiE&callback=initMap" async defer></script>
    </body>
    
    </html>
    <script>
        $(window).load(function(){
            //$("#map [title='点击以在 Google 地图上查看此区域']").hide(); 
            //$('.gm-style-cc').hide();
        });
    </script>

    注意:请引入自己本地的jquery,因为要用的ajax请求,谷歌的地理服务接口。

    代码的核心就在于请求的URL:

    url:"https://maps.googleapis.com/maps/api/geocode/json?latlng="+latLngData+"&location_type=ROOFTOP&result_type=street_address&key=AIzaSyC8IXpNgfA7uD-Xb0jEqhkEdB7j3gbgOiE"

    这个是经纬度反向地理编码, 这段url里有四个参数:latlnglocation_typeresult_typekey,具体概念以及参数详解,请参考下一章的 谷歌地图API 开发 之 Geocoding API

  • 相关阅读:
    cocos2d-x 3.0rc1 编译cpp-testsproject
    [wxWidgets]_[0基础]_[不常见但有用的类wxStandardPaths]
    教你摆脱低级程序猿 项目中cocopads的安装使用
    Android使用代码模拟HOME键的功能
    UVA 1508
    asp.net mvc5 安装
    Java_并发线程_Semaphore、CountDownLatch、CyclicBarrier、Exchanger
    crm操作产品实体
    BZOJ 3172 [Tjoi2013]单词 AC自己主动机(fail树)
    ADO与ADO.Net
  • 原文地址:https://www.cnblogs.com/phpfensi/p/8350657.html
Copyright © 2011-2022 走看看