2015-11-14 127 views
0

如何按位置(地址)進行搜索。Google地圖按地址搜索

我想將位置傳遞給我的地圖。現在我已經增加了經緯度。 還是有快速的方法來找出經緯度和長期的JavaScript?

var mapOptions = { 
     zoom: 4, 
     center: new google.maps.LatLng(40.0000, -98.0000), Here I want to just add the location for example Dublin, Ireland 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 

http://jsfiddle.net/pc7Uu/346

感謝您的幫助。

最佳

+0

你爲什麼不看文檔:https://developers.google.com/maps/documentation/javasc ript/examples/places-searchbox –

回答

0

這就是所謂的地理編碼,它實際上是非常容易使用,閱讀The Google Maps Geocoding API上手,因爲你是使用JavaScript你不需要一個API_KEY所以實際上你可以將地址轉換爲緯度/ LNG值,像這樣的請求:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA

你將得到的 「位置」 鍵內與座標的JSON,像這樣:

... 
"location" : { 
    "lat" : 37.4220352, 
    "lng" : -122.0841244 
}, 
... 

從V2到V3有變化(推薦)。這裏有情況下,兩個單證你想使用一個特定版本:

V3 API:http://code.google.com/apis/maps/documentation/geocoding/

V2 API:http://code.google.com/apis/maps/documentation/services.html#Geocoding

如果你想自動填充功能和/或網站名稱,緯度/經度座標,檢查例如Place Autocomplete Hotel Search

+0

如何訪問json對象?我試過$ .getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=1600%20Amphitheatre%20Parkway,%20Mountain%20View,%20CA',功能(數據){ 控制檯。 log('aasdfasfasfsdf'+ data.geometry); }); – Tony

0

我認爲你現在的代碼不會做你想做的事情。

首先,這是代碼需要做的事情,用簡單的英語。我會在稍後解釋每一部分。

1.向谷歌地理編碼API發送請求:該請求將包括您正在嘗試尋找的地址& lng for。您將收到JSON形式的回覆,您將解析該回復以獲取所需的信息。

2.保存在一個變量

3.信息(經度和緯度)創建地圖,並使用LAT & LNG你發現以上爲中心。

好的,現在這裏是代碼的來源。別擔心,這些代碼示例非常簡單,您可以輕鬆理解要執行的操作。

  1. 如何發送的 'GET' 請求:

     
    var request = new XMLHttpRequest(); 
    request.onreadystatechange = function() { 
        if (request.readyState === 4) { 
         if (request.status === 200) { 
          document.body.className = 'ok'; 
         } else { 
          document.body.className = 'error'; 
         } 
        } 
    }; 
    request.open("GET", url , true); 
    request.send(null); 
    

地址解析HTTP請求: https://developers.google.com/maps/documentation/geocoding/intro#GeocodingRequests

  • 這裏是代碼將如下所示:(示例)

     
    var json = https://maps.googleapis.com/maps/api/geocode/json?address=1600+"ADD ADDRESS HERE"&key=YOUR_API_KEY; 
    var object = JSON.parse(json); 
    
  • 然後你可以從這個對象中提取緯度& lng。

  • 之後,創建使用地圖:(鏈接)www.developers.google.com/maps/tutorials/fundamentals/adding-a-google-map

  • (使用緯度和經度你上述提取爲所述谷歌地圖的「中心」,將創建)

    0

    Google Maps Geocoding API被用於該目的,下面的例子說明了如何基於所提供的地址設置地圖中心:

    //Data 
     
    var cities = [ 
     
        { 
     
         city : 'Toronto', 
     
         desc : 'This is the best city in the world!', 
     
         lat : 43.7000, 
     
         long : -79.4000 
     
        }, 
     
        { 
     
         city : 'New York', 
     
         desc : 'This city is aiiiiite!', 
     
         lat : 40.6700, 
     
         long : -73.9400 
     
        }, 
     
        { 
     
         city : 'Chicago', 
     
         desc : 'This is the second best city in the world!', 
     
         lat : 41.8819, 
     
         long : -87.6278 
     
        }, 
     
        { 
     
         city : 'Los Angeles', 
     
         desc : 'This city is live!', 
     
         lat : 34.0500, 
     
         long : -118.2500 
     
        }, 
     
        { 
     
         city : 'Las Vegas', 
     
         desc : 'Sin City...\'nuff said!', 
     
         lat : 36.0800, 
     
         long : -115.1522 
     
        } 
     
    ]; 
     
    
     
    //Angular App Module and Controller 
     
    angular.module('mapsApp', []) 
     
    .controller('MapCtrl', function ($scope) { 
     
    
     
        var mapOptions = { 
     
         zoom: 4, 
     
         //center: new google.maps.LatLng(40.0000, -98.0000), 
     
         mapTypeId: google.maps.MapTypeId.TERRAIN 
     
        } 
     
    
     
        $scope.map = new google.maps.Map(document.getElementById('map'), mapOptions); 
     
        
     
    
     
    
     
        var setMapCenterByAddress = function(map,address) { 
     
         var geocoder = new google.maps.Geocoder(); 
     
         if (geocoder) { 
     
          geocoder.geocode({ 'address': address }, function (results, status) { 
     
           if (status == google.maps.GeocoderStatus.OK) { 
     
    
     
            map.setCenter(results[0].geometry.location); 
     
            var marker = new google.maps.Marker({ 
     
             map: map, 
     
             position: results[0].geometry.location, 
     
             title: address 
     
            }); 
     
           } 
     
           else { 
     
            console.log("Geocoding failed: " + status); 
     
           } 
     
          }); 
     
         } 
     
        }; 
     
    
     
        setMapCenterByAddress($scope.map,'Dublin, Ireland'); 
     
    
     
    });
    <script src="http://maps.googleapis.com/maps/api/js?key=&sensor=false"></script> 
     
    <script src="http://code.angularjs.org/1.2.25/angular.js"></script> 
     
    <script src="map.js"></script> 
     
    <style> 
     
    #map { 
     
        height:420px; 
     
        width:600px; 
     
    } 
     
    </style> 
     
    <div ng-app="mapsApp" ng-controller="MapCtrl"> 
     
        <div id="map"></div> 
     
    </div>