2013-06-19 18 views
5

Tôi đang làm việc với một ứng dụng Android tương tác với dịch vụ web REST. Chúng tôi có một chức năng trong điện thoại để chọn một vị trí trong bản đồ gốc của Google và gửi đến máy chủ.Tạo địa chỉ từ Lat/Long trong Android hoặc REST

Vì lý do nào đó, chúng tôi cần lấy địa chỉ cho điểm đó trên trang web để in ra.

Nếu chúng tôi lấy địa chỉ từ Latitude và Longtitude trong điện thoại sử dụng Geocoder và gửi nó đến REST, chúng ta cần tiêu thụ một số bộ nhớ, dữ liệu và băng thông trong điện thoại.

Nếu chúng ta làm điều đó trong REST, vì nó nên được thực hiện cho nhiều người dùng đang sử dụng ứng dụng, quá trình này có thể tốn thời gian. (đây là điều mà nhà phát triển REST của chúng tôi tin)

Bạn có thể giúp tôi với ý kiến ​​của bạn không? ý tưởng nào tốt hơn và tại sao?

+0

Tôi có yêu cầu tương tự nhưng tôi đã từng đọc giá trị lat/lon từ dịch vụ Rest và địa chỉ hiển thị trong điện thoại.Bạn đang cố gắng đọc nhiều giá trị ??? –

+0

Giá trị phải được hiển thị trên trang web. Lat/long đang tạo trong điện thoại. Tôi tự hỏi rằng nó là tốt hơn để tạo ra địa chỉ trong điện thoại là tốt hoặc làm điều đó trong REST. – Ali

+0

Tốt hơn để tạo trong Điện thoại thay vì xử lý trong Dịch vụ tôi đoán là không tiêu tốn nhiều băng thông đó. –

Trả lời

1

xin vui lòng sử dụng chức năng này

Chuỗi getAddress (Double lat, đôi lon) { Chuỗi địa chỉ = "";

GeoPoint point = new GeoPoint((int) (lat * 1E6), 
      (int) (lon * 1E6)); 

    Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault()); 
    try { 
     List<Address> addresses = geoCoder.getFromLocation(
       point.getLatitudeE6()/1E6, point.getLongitudeE6()/1E6, 
       1); 

     if (addresses.size() > 0) { 
      for (int index = 0; index < addresses.get(0) 
        .getMaxAddressLineIndex(); index++) 
       address += addresses.get(0).getAddressLine(index) + " "; 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return address; 
} 
+0

Nó không phải là những gì tôi yêu cầu trong câu hỏi! – Ali

2

gì bạn đang làm được gọi là "mã hóa địa lý đảo ngược" (https://developers.google.com/maps/documentation/geocoding/?hl=fr#ReverseGeocoding)

Về bạn hỏi: Tôi hiểu rằng bạn đảo ngược mã địa lý vị trí một số người dùng và rằng các địa chỉ genrated sẽ được sử dụng bởi nhiều người dùng khác .

Biết rằng: 1. geoding ngược lại là tốn kém 2. địa chỉ thu được sẽ được sử dụng bởi nhiều người sử dụng 3. mỗi người dùng sẽ sử dụng nhiều trong những địa chỉ Sau đó, bạn nên làm điều đó phía máy chủ và đặt tất cả các địa chỉ trong một tin nhắn. Nếu bạn có thể giới hạn số lượng địa chỉ cho những địa chỉ duy nhất hữu ích, nó sẽ tốt hơn (có thể là những địa chỉ gần bạn, nhưng phụ thuộc vào các tính năng của ứng dụng của bạn)

Quan trọng: Khi trên thiết bị di động, điều quan trọng đối với buổi biểu diễn không phải là lượng dữ liệu được truyền thay vì số lượng tin nhắn: băng thông tốt nhưng độ trễ là khủng khiếp. Vì vậy, trong API máy chủ của bạn, tránh hoạt động nguyên tử và tổng hợp nhiều như nó có ý nghĩa!

0

Bạn có thể sử dụng thông qua Điện thoại. Theo tôi sử dụng thông qua dịch vụ sẽ mất nhiều băng thông.

Tôi khuyên bạn nên sử dụng trực tiếp trong điện thoại thay vì sử dụng thông qua Dịch vụ.