những gì tôi đang cố gắng thực hiện: người dùng chọn bắt đầu và đích trên bản đồ và sau đó từ tọa độ của họ tôi muốn hiển thị vị trí điểm gần nhất từ danh sách vị trí trên bản đồ . tôi có một cơ sở dữ liệu Sqlite đơn giản chứa kinh độ, vĩ độ và tên của các vị trí có thể.tìm điểm gần nhất của Gps tới vị trí người dùng trong danh sách
tôi đã làm một số nghiên cứu và đây là những gì tôi tìm thấy:
http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
nhưng điều này có nghĩa là để sử dụng nó với MySQL và một số loại phần mở rộng tìm kiếm không gian. là có khả năng tôi có thể làm điều gì đó tương tự bằng cách sử dụng api android hoặc libs bên ngoài?
public Point dialogFindClosestLocationToPoint(geometry.Point aStartPoint){
List<PointWithDistance> helperList=new ArrayList<PointWithDistance>();
try {
openDataBase();
Cursor c=getCursorQueryWithAllTheData();
if(c.moveToFirst())
do{
PointWithDistance helper=new PointWithDistance(c.getDouble(1),c.getDouble(2),c.getString(3));
int distance=returnDistanceBetween2Points(aStartPoint, helper);
if(distance<MAX_SEARCH_DISTANCE){
helper.setDistance(distance);
Log.i("values", helper.name);
helperList.add(helper);
}
}while (c.moveToNext());
Collections.sort(helperList,new PointComparator());
if(helperList!=null)
return helperList.get(0);
else return null;
}catch(SQLException sqle){
throw sqle;
}
finally{
close();
}
đây là mã trong() lớp PointComparator:
public int compare(PointWithDistance o1, PointWithDistance o2) {
return (o1.getDistance()<o2.getDistance() ? -1 : (o1.getDistance()==o2.getDistance() ? 0 : 1));
}
nơi PointWithDistance
là một đối tượng có chứa: lat, dài, khoảng cách, tên
tuy nhiên giải pháp này không cung cấp thông tin trả về đúng ... và tôi nhận ra rằng nó không có khả năng mở rộng và rất chậm. tôi cần một giải pháp mà sẽ thực thi nhanh chóng với một cơ sở dữ liệu với tối đa 1000 hàng.
chỉnh sửa: tôi đã có một sai lầm trong mã này trong sắp xếp bây giờ tôi có nó thay đổi (nên < thay vì>)
Tôi tin rằng bạn đã vượt qua các biến thông qua php. $ lat là vĩ độ hiện tại của bạn, $ lon là vĩ độ hiện tại. Nhưng $ R là gì? –
Không phải là $ R bán kính trái đất? xem: http://www.movable-type.co.uk/scripts/latlong.html – leochab