8

Tôi có một số mã mà tôi đang chuyển từ API v2 sang v3. Trong mã cũ, chúng tôi đã có một trường chính xác quay lại trong xml (không chắc chắn về tên, nhưng nó đã đại diện cho một mức độ tin cậy của các loại). Trong API mới, tôi không thấy bất kỳ trường nào giống như vậy.API mã hóa địa lý Google Maps v3 có trường đại diện cho độ chính xác không?

Nếu tôi đặt "Oregon, USA" vào trường tìm kiếm, tôi nhận được 5 kết quả phù hợp. Đầu tiên 2 là "Oregon, USA" và "Oregon, OH, USA". Cả hai đều có "partial_match" = false. Điều này có vẻ không đúng, có vẻ như một phần và một không. Ngoài ra, cả hai đều trở lại với cùng một "location_type" (APPROXIMATE). Trên thực tế, tất cả các kết quả phù hợp đều hiển thị không phải là một phần và có cùng loại vị trí.

Câu hỏi của tôi là, bất kỳ trường nào trong tập kết quả có truyền đạt một số loại độ tin cậy về độ chính xác của kết quả không? Trong mẫu của tôi nó thực sự có vẻ như một kết quả là chính xác hơn nhiều so với bất kỳ khác - rất nhiều để chuỗi đầu vào khớp chính xác với trường QuickAddress được trả về.

Trả lời

11

Hai tuần, không có câu trả lời, do đó, đây là giải pháp của tôi.

API sẽ trả lại ROOFTOP, GEOMETRIC_CENTER, RANGE_INTERPOLATED hoặc APPROXIMATE.

Trên tầng thượng về bản chất là "đã chết" - API đã giải quyết địa chỉ cho một tòa nhà. Ngoài ra, bạn sẽ nhận được các mức độ "gần" khác nhau. Giải pháp của tôi là sử dụng hộp giới hạn đã được trả lại để xác định mức độ đóng gần. Vì vậy, nếu bạn yêu cầu một đường phố (Avenue of the Americas, NY, NY), bạn sẽ nhận được một hộp giới hạn lớn. Yêu cầu một địa chỉ trên con đường mà API nghĩ là địa chỉ thực tế nhưng không phải là một Rooftop, bạn sẽ nhận được một hộp giới hạn rất nhỏ. Tôi đã sử dụng khu vực của hộp giới hạn để xác định độ chính xác của kết quả. Điểm dừng chính xác/không chính xác của tôi là ở 0.9E-6 nhưng tôi nghĩ bạn phải tin với nó để đảm bảo bạn cảm thấy thoải mái với con số đó.

+0

Rất thông minh. Sẽ không có suy nghĩ về điều đó. Tôi đã làm một số thử nghiệm với địa chỉ "không phải trên tầng thượng" của chúng tôi và tìm thấy một phạm vi rộng lớn. Chúng tôi có bốn phân tích, mái nhà, đường phố (nghĩa là chặn hoặc ZIP + 4), ZIP + 2 và ZIP. Đối với mỗi loại vị trí không phải trên tầng thượng của Google, tôi đã tạo ra logic để phân tích thêm độ chính xác bởi vì đôi khi APPROXIMATE kết thúc giống như ZIP + 4 (trong đó, ở khu vực thành thị thường gần với mái nhà) và RANGE_INTERPOLATED giống như ZIP, tức là khổng lồ. –

+0

Một điều khác tôi nhận thấy là đôi khi Google cho ROOFTOP chỉ với địa chỉ đường phố nhưng thêm bộ/đơn vị/apt/bất cứ điều gì ... làm cho nó chuyển sang APPROXIMATE mặc dù lat/lon vẫn như cũ. Đây là nơi mà ý tưởng của bạn có ích. Lần khác chỉ là địa chỉ đường phố APPROXIMATE trong khi thêm đơn vị phụ làm cho nó chuyển sang ROOFTOP. Tôi đã thấy nhiều hơn về dữ liệu đầu tiên, tức là ít hơn "ít" hơn. Tôi đang nghĩ về xây dựng trong logic để thử mà không có đơn vị phụ đầu tiên và nếu không ROOFTOP thử với tiểu đơn vị. Nếu vẫn không ROOFTOP, sau đó so sánh các hộp giới hạn và sử dụng hộp nhỏ hơn. –

+0

@AndrewS cảm ơn, tôi đã cảm thấy như tôi là người duy nhất ở góc đặc biệt này của internet - không bao giờ có câu trả lời trên các nhóm google như tôi nhớ ... – jcollum

2

Tôi đã tìm thấy khi cập nhật mã V2 di sản hữu ích này phụ thuộc vào một 0-9 điểm
// Hack để chuyển đổi LOCATION_TYPE (string) để 0-9 điểm Mã hóa địa lý như 0-9 điểm Mã hóa địa lý không tồn tại trong v3 API

function get_numeric_score(results) { 
switch(results[0].geometry.location_type){ 
     case "ROOFTOP": 
      return 9; 
     break; 

     case "RANGE_INTERPOLATED": 
      return 7; 
     break; 

     case "GEOMETRIC_CENTER": 
      return = 6; 
     break; 

     case "APPROXIMATE": 
      return 4; 
     break; 

     default: 
      return 0; 

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