2011-10-16 43 views
5

Tôi đã sử dụng đoạn mã sau, mà đã làm việc tốt trong một tuần hoặc lâu hơn, tôi đã quay trở lại để làm việc trên nó hơn nữa và nó dường như không còn hoạt động nữa. Tôi chỉ muốn hiển thị các địa phương. Nhìn vào tài liệu của Google "địa phương" là lựa chọn đúng để làm như vậy. Tôi đã nghĩ rằng có lẽ google đã thay đổi API hoặc một cái gì đó. Ngay sau khi tôi chuyển nó sang mã địa lý, nó hoạt động nhưng hiển thị tất cả các đường phố và địa điểm, đó không phải là những gì tôi muốn. Tôi cũng đã thử ["địa phương", "chính trị"] cũng như không có may mắn. Tôi làm gì sai ở đây?Tự động hoàn thành API Google Địa điểm v3 - không thể hoạt động tại địa phương?

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

    var input = document.getElementById('searchTextField'); 

    var Newoptions = { 
     types: ["locality"] 
    }; 

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

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

<input id="searchTextField" name="member_location" value="" type="text" > 

Trả lời

1

Địa phương không phải luôn luôn được cung cấp trong các kết quả, vì vậy bạn phải cung cấp một dự phòng nếu bạn đang ở trong một khu vực không có địa phương, như administrative_area_level_3, mặc dù là người duy nhất bạn sẽ luôn luôn nhận được là đất nước, vì vậy bạn 'd tốt hơn có nó dự phòng cuối cùng đến đó.

+0

nhưng tại sao lại như vậy? có phải vì API Google Maps không biết/xác định các vị trí địa lý cho khu vực địa lý đó chưa, ví dụ: đất nước như Singapore? – ericn

0

Trong code của bạn, bạn đã sử dụng

var Newoptions = { 
     types: ["locality"] //This is not proper types. 
    }; 

Sử dụng loại: [ '(vùng)'] Thay vào đó. Sau đó lấy mẫu địa phương đó. Mã mẫu dưới đây và nó hoạt động tốt.

autocomplete = new google.maps.places.Autocomplete(
    (document.getElementById('YOURsearchBOXID')), 
     { types: ['(regions)']}); 

     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 

     for (var i = 0; i < place.address_components.length; i++) { 
      if(place.address_components[i].types[0] == "locality") 
      { 
       console.log(place['address_components'][i]['long_name']); 
      break; 
      } 
     } 

    }); 
Các vấn đề liên quan