2013-03-09 22 views
10

Yer Önerileri almak için Otomatik Tamamlama yöntemini kullanıyorum ve Seçmek istediğim Yeri tıklattığımda, aşağıdaki gibi place.geometry.location altına yerleştirilen Lat ve Lng'u ayıklamak istiyorum. Benim gözlem gereğince Google Maps, LatLng değerini alır

Firebug Screenshot

, tuşlar ib ve jb her oturum ile sürekli değişiyor. Lat ve Lng'u tahmin edilebilir bir şekilde ayıklamanın bir yolu var mı? onun .lat() ve .lng() yöntemleri çağırabilir böylece

$(document).ready(function() { 

    var mapOptions = { 
     center : new google.maps.LatLng(-33.8688, 151.2195), 
     zoom : 13, 
     mapTypeId : google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById('map'), mapOptions); 

    $('#searchTextField').bind('keydown keypress', function() { 
     setTimeout(function() { 
      var inputQuery = $('#searchTextField').val(); 

      if (inputQuery.length >= 2) { 
       //console.log(inputQuery); 

       /* 
       var service = new google.maps.places.AutocompleteService(); 

       service.getPlacePredictions({ 
        input : inputQuery 
       }, callback); 
       */ 

       var input = document.getElementById('searchTextField'); 
       var options = { 
        types : ['geocode'] 
       }; 

       var autocomplete = new google.maps.places.Autocomplete(input, options); 

       // Acting on Selecting a place 
       google.maps.event.addListener(autocomplete, 'place_changed', function() { 
        //infowindow.close(); 
        var place = autocomplete.getPlace(); 

        console.log(place); 
        console.log(place.formatted_address); 
        console.log(place.name); 
        console.log(place.geometry.location); 
        console.log(place.geometry.location[0]); 

        // Show the map to the current location selected 
        if (place.geometry.viewport) { 
         map.fitBounds(place.geometry.viewport); 
        } else { 
         map.setCenter(place.geometry.location); 
         map.setZoom(17); 
         // Why 17? Because it looks good. 
        } 

        var marker = new google.maps.Marker({ 
         position : place.geometry.location, 
         map : map, 
         draggable : true, 
        }); 

        $.each(place.geometry.location, function(key, value) { 
         console.log(key + ": " + value); 
        }); 
       }); 
      } 

     }, 0); 

    }); 
}); 

cevap

35

place.geometry.location, bir LatLng olduğunu.

var location = place.geometry.location; 
var lat = location.lat(); 
var lng = location.lng(); 

Bu yöntemlerin, bu nesnenin incelenmesinde bulunduğunu göreceksiniz.

Hiçbir zaman, keşfedilen ib ve jb gibi belgesiz özelliklerini kullanmayın. Google, Google Haritalar API'sını Closure Compiler veya özel mülkler ve değişkenler için rastgele adlar üreten benzer bir araç kullanarak derler.

+1

çok teşekkürler: D –

+1

Benim için zevk verdiğine çok sevindim. –

+0

benim sorunumda da çözüm bulmaktan mutluluk duyuyoruz .. – WorM