2012-11-20 31 views
40

Tôi đang cố gắng để có được vĩ độ và kinh độ từ bản đồ api google tự động hoàn thành mà không hiển thị bản đồ. Trong tự động hoàn thành tập lệnh của tôi hoạt động tốt nhưng tôi không thể nhận được vĩ độ và kinh độ.Bản đồ Google api có được Latitude và kinh độ từ tự động hoàn tất mà không có bản đồ

<script type="text/javascript"> 
    function initialize() { 

var options = { 
    types: ['(cities)'] 
}; 

var input = document.getElementById('searchTextField'); 
var autocomplete = new google.maps.places.Autocomplete(input, options); 
} 
    google.maps.event.addDomListener(window, 'load', initialize); 

    var geocoder = new google.maps.Geocoder(); 
    var address = autocomplete; 

geocoder.geocode({ 'address': address}, function(results, status) { 

    if (status == google.maps.GeocoderStatus.OK) { 
    var latitude = results[0].geometry.location.lat(); 
    var longitude = results[0].geometry.location.lng(); 
    alert(latitude); 
    } 
}); 

</script> 

Trả lời

0

API Google Địa điểm cũng cung cấp REST api bao gồm Địa điểm Tự động hoàn tất. https://developers.google.com/places/documentation/autocomplete

Nhưng dữ liệu truy xuất từ ​​dịch vụ phải sử dụng cho bản đồ.

+3

Hiện không có vẻ như vậy. Tài liệu Google API cho biết: "Bạn có thể sử dụng Tự động điền địa điểm ngay cả khi không có bản đồ. Nếu bạn hiển thị bản đồ thì đó phải là bản đồ của Google. Khi bạn hiển thị các gợi ý từ dịch vụ Tự động điền địa điểm mà không có bản đồ, bạn phải bao gồm 'được hỗ trợ bằng biểu trưng của Google. " Điều này được lấy từ tài liệu API: https://developers.google.com/places/documentation/autocomplete –

100

Bạn có thể sử dụng mã bên dưới.

<script src="http://maps.googleapis.com/maps/api/js?libraries=places" type="text/javascript"></script> 

<script type="text/javascript"> 
    function initialize() { 
     var input = document.getElementById('searchTextField'); 
     var autocomplete = new google.maps.places.Autocomplete(input); 
     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
      var place = autocomplete.getPlace(); 
      document.getElementById('city2').value = place.name; 
      document.getElementById('cityLat').value = place.geometry.location.lat(); 
      document.getElementById('cityLng').value = place.geometry.location.lng(); 
      //alert("This function is working!"); 
      //alert(place.name); 
      // alert(place.address_components[0].long_name); 

     }); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

... và phần này là bên trong hình của bạn:

<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" /> 
<input type="hidden" id="city2" name="city2" /> 
<input type="hidden" id="cityLat" name="cityLat" /> 
<input type="hidden" id="cityLng" name="cityLng" /> 

Tôi hy vọng nó giúp.

4

Bạn không thể nhận được vĩ độ/kinh độ từ API tự động điền vì dữ liệu do google tạo từ API đó không chứa trường vĩ độ và vĩ độ. Ví dụ: -

{ 
    "predictions" : [ 
     { 
     "description" : "IIT Mumbai, Mumbai, Maharashtra, India", 
     "id" : "ac3235cda973818a89b5fe21ad0f5261ac9b6723", 
     "matched_substrings" : [ 
      { 
       "length" : 10, 
       "offset" : 0 
      } 
     ], 
     "reference" : "CkQ0AAAAHWg-RSngiYHHdz_yqyFKmfSoBwT-_PW0k8qQDhsbiVrk7BlPHCyJb58OthledMUTGYS5Vhec1Zj2L7w9Rq0zDxIQrbn05RX1QgWHkSXsmTk1TRoU45APW2BBRIUsA3t6XBy_8s0BPPA", 
     "terms" : [ 
      { 
       "offset" : 0, 
       "value" : "IIT Mumbai" 
      }, 
      { 
       "offset" : 12, 
       "value" : "Mumbai" 
      }, 
      { 
       "offset" : 20, 
       "value" : "Maharashtra" 
      }, 
      { 
       "offset" : 33, 
       "value" : "India" 
      } 
     ], 
     "types" : [ "establishment", "geocode" ] 
     } 
    ], 
    "status" : "OK" 
} 

Bạn có thể sử dụng API Google để lấy Kinh độ và Latitude từ địa chỉ của mình. Như bạn đã nói, bạn nên thực hiện một trường ẩn mà kết quả sẽ được chèn vào. Sau đó, bạn có thể lưu vị trí cùng với các tọa độ.

ví dụ https://maps.googleapis.com/maps/api/geocode/json?address=IIT%20Area,%20Mumbai,%20Maharashtra,%20India&sensor=false

Gần đây tôi đã thực hiện chức năng này trong một trong những dự án của tôi:

function getLatLngFromAddress(city, country){ 

    var address = city +", "+ country; 
    var geocoder = new google.maps.Geocoder(); 

    geocoder.geocode({ 'address': address}, function(results, status) { 

    if (status == google.maps.GeocoderStatus.OK) { 
     $('#latitude').val(results[0].geometry.location.Pa); 
     $('#longitude').val(results[0].geometry.location.Qa); 

    } else { 
     console.log("Geocode was not successful for the following reason: " + status); 
    } 
    }); 
} 
+1

Chỉ cần sử dụng Chi tiết địa điểm cho place_id bạn nhận được https://developers.google.com/places/documentation/details – CallMeLaNN

+1

place.geometry.location.lat() – 4ndro1d

0

Bạn có thể nhận được từ các api cùng mà không cần bất kỳ api bổ sung hoặc gọi url.

HTML

<input class="wd100" id="fromInput" type="text" name="grFrom" placeholder="From" required/> 

Javascript

var input = document.getElementById('fromInput'); 
var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(-33.8902, 151.1759), 
    new google.maps.LatLng(-33.8474, 1512631) 
) 

var options = { 
bounds: defaultBounds 
} 

var autocomplete = new google.maps.places.Autocomplete(input, options); 
var searchBox = new google.maps.places.SearchBox(input, { 
     bounds: defaultBounds 
}); 


google.maps.event.addListener(searchBox, 'places_changed', function() { 
    var places = searchBox.getPlaces(); 


console.log(places[0].geometry.location.G); // Get Latitude 
console.log(places[0].geometry.location.K); // Get Longitude 

//Additional information 
console.log(places[0].formatted_address); // Formated Address of Place 
console.log(places[0].name); // Name of Place 






    if (places.length == 0) { 
     return; 
    } 

    var bounds = new google.maps.LatLngBounds(); 
    console.log(bounds); 
    }); 
    } 
2

Có bạn có thể:

var place = autocomplete.getPlace(); 

document.getElementById('lat').value = place.geometry.location.lat(); 
document.getElementById('lon').value = place.geometry.location.lng(); 
12

Chỉ cần:

var place = autocomplete.getPlace(); 
// get lat 
var lat = place.geometry.location.lat(); 
// get lng 
var lng = place.geometry.location.lng(); 
+0

Thx mate. Làm việc một điều trị. Chỉ cần chỉ ra rằng 'autocomplete' là đối tượng được tạo bởi' new google.maps.places.Autocomplete (nativeElement', options) ' – dewd

-2
@Override 
public void onPlaceSelected(Place place) { 
    LatLng autoCompleteLatLng = place.getLatLng(); 
    newLoc = new Location("New"); 
    newLoc.setLatitude(autoCompleteLatLng.latitude); 
    newLoc.setLongitude(autoCompleteLatLng.longitude); 

    geoLocate(newLoc);//mark it in map 
} 
Các vấn đề liên quan