2012-05-16 41 views
7

Tôi có mã jQuery sau hoạt động tốt với danh sách thành phố cho quốc gia đã chọn.Tự động hoàn thành JavaScript của Google Địa điểm: tôi có thể xóa quốc gia khỏi tên địa điểm không?

var city; var place; 

$('#city').on('focus',function(){ 
    input = this, options = { 
     types: ['(cities)'], 
     componentRestrictions: { 
      country: $('#country option:selected').val() 
      } 
    }; 
    city = new google.maps.places.Autocomplete(input, options); 
    google.maps.event.addListener(city, 'place_changed', function() { 
     place = city.getPlace(); 
     $(input).val(place.address_components[0].long_name); 
    }) 
}) 

Về cơ bản, khi người đó chọn địa điểm, nó sẽ thay thế giá trị trong hộp nhập với giá trị "thành phố" không có quốc gia. Có một chút ngu ngốc khi có City, Country trong menu thả xuống khi người dùng đã chọn quốc gia, vì vậy, không ai biết liệu có thể hiển thị JUST tên thành phố nếu bạn đã xác định giá trị componentRestrictions hạn chế kết quả cho một Quốc gia?

Tôi thấy phương pháp hiện tại của tôi đặt nó một lần lựa chọn đã được thực hiện cho được một chút ... rác thực sự ...

+0

Tôi đã đọc qua câu hỏi của bạn nhiều lần và tôi không cảm thấy như tôi hoàn toàn hiểu những gì bạn mô tả. Tôi nghĩ có lẽ nếu bạn bao gồm một số đánh dấu, nó sẽ đưa ra câu hỏi một số bối cảnh và giúp mọi người hiểu. Hoặc có thể là một liên kết đến trang của bạn hoặc một ví dụ về jsFiddle? –

+0

Nói chung, bạn có thể chỉnh sửa nội dung trong menu thả xuống không? Ý tôi là, nếu tên quốc gia được biết, 'thay thế 'nó ra khỏi mục được hiển thị thả xuống. –

+0

Trình đơn thả xuống được tạo bởi Google. cũng là một đoạn mã sẽ không hoạt động và liên kết đến trang của tôi sẽ không giúp gì được cho đến khi vấn đề được khắc phục, nó sẽ không xuất hiện trên trang, trả lời câu hỏi vô dụng khi nó đã được trả lời cho bất kỳ những người muốn làm một cái gì đó như thế này. –

Trả lời

3

Câu trả lời ngắn gọn là: nội dung câu trả lời trong Autocomplete được điều khiển bởi Google (bạn đề cập đến điều này trong một trong các nhận xét của mình) và Autocompleteapi-doc không cung cấp cách tùy chỉnh văn bản phản hồi được hiển thị, thay vì thay đổi văn bản giữ chỗdev-guide. Giải pháp bạn đang sử dụng là về lựa chọn tốt nhất mà bạn có (và có một chút phản ứng, nhưng tôi không biết nếu nó thực sự là "rác").

Ngoài ra, nếu bạn không hài lòng với cách tiếp cận đó, bạn luôn có thể tạo vùng nhập của riêng bạn và kiểm soát hoàn toàn phản hồi yêu cầu của chính bạn. Bạn có thể trực tiếp sử dụng Thư viện địa điểm dev-guide và kiểm soát hoàn toàn mọi thứ được hiển thị.

1

Tôi đợi 100 mili giây, sau đó thay thế hộp văn bản bằng nội dung tôi muốn.

Trừ trường hợp của tôi, tôi muốn có một ô trống, nhưng chèn một dấu cách.

10

Khi gọi API của Google, chỉ định thuộc tính "khu vực":

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false&key=your_key&language=fr&region=FR"></script> 

Sau đó, khi bạn tạo một đối tượng Autocomplete, xác định nước trong các thuộc tính componentRestriction, do đó nó phản ánh khu vực bạn chỉ định:

 

    new google.maps.places.Autocomplete(
     $("#my-input-field").get(0), 
     { 
      componentRestrictions: {country: "fr"}, 
      types: ["(regions)"] 
     } 
    ); 

+0

Đây có phải là tính năng mới đối với API Google Maps không? Tôi đã đăng câu hỏi này gần hai năm trước! –

+2

Thật không may, điều này không hoạt động đối với Hoa Kỳ. Nhưng những người khác có vẻ ổn. –

+0

Làm việc với 'region = US' cho tôi! – rebello95

2

Ngoài ra, bạn có thể tự giúp mình bằng cách css - ẩn khoảng cuối cùng (= trạng thái) trong mục tự động hoàn thành.

.pac-item > span:last-child { 
    display: none; 
} 
+1

Vì ẩn giấu quốc gia và tiểu bang, đây không phải là giải pháp trong nhiều trường hợp mà nhiều tiểu bang có thành phố có cùng tên. Ví dụ: ở Hoa Kỳ, bốn tiểu bang có một thành phố được gọi là Độc lập. – Reid

Các vấn đề liên quan