2015-04-01 129 views
0

我正在计划这个。第一个设备从json获取所有位置和信息。 Json包括经度和纬度。之后,计算每件物品与设备的距离。如果它小于x数字在列表视图中显示。我曾经使用json解析和基本的列表视图。JSON和位置距离计算

这里是位置代码计算

Location locationA = new  Location("point A"); 
locationA.setLatitude(latA); 
locationA.setLongitude(lngA); 
Location  locationB = new Location("point B"); 
locationB.setLatitude(latB); 
locationB.setLongitude(lngB); 
float  distance = locationA.distanceTo(locationB); 

我将使用这个代码。

我认为这将是这样的。 获取json物品。之前,但它在列表检查距离,如果它是爱人比x把它放在列表中,否则返回获取json项目

我需要一些代码。

回答

0

所以你有两个坐标点计算距离的代码? 我用网页制作这样的东西。 您可以将所有坐标保存到数据库中,当您拥有手机位置时,可以取回位置附近的所有坐标(如过滤器)。 之后,您可以使用您的代码来检查女巫坐标是否在您的范围X内,并将其放入包含坐标的类中。

你的坐标类:

public class Coordinates { 

private double _lat; 
private double _lng; 


//Empty constructor 
public Coordinates(){ 

} 
//Constructor 
public Coordinates(int id, double lat, double lng){ 
    this._lat = lat; 
    this._lng = lng; 
} 
// constructor 
public Materia(double lat, double lng){ 
    this._lat = lat; 
    this._lng = lng; 
} 
// getting ID 
public int getID(){ 
    return this._id; 
} 

// setting id 
public void setID(int id){ 
    this._id = id; 
} 

//getting latitude 
public int getLat(){ 

    return this._lat; 

} 
//setting color 
public void setLat(double lat){ 

    this._lat = lat; 

} 
//getting longitude 
public Double getLng() { 

    return this._lng; 

} 
//setting longitude 
public void setLng(Double lng) { 

    this._lng = lng; 

} 
} 

您的数据库SQLite的:

public class MySQLiteHelper extends SQLiteOpenHelper { 

//Database version 
private static final int DATABASE_VERSION = 1; 
//Database name 
private static final String DATABASE_NAME = "coordinates.db"; 
//Materie table name 
public static final String TABLE_COORDINATES = "coordinates"; 
//coordinates columns table names 
public static final String COLUMN_ID = "_id"; 
public static final String COLUMN_LAT = "latitude"; 
public static final String COLUMN_LNG = "longitude"; 

public MySQLiteHelper(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 
onCreate(){} 
onUpdate(){} 
//Other methods that you need 

//Here something like 
// Getting All Coordinates 
public List<Coordinate> getAllCoordinate() { 
    List<Coordinate> coordinateList = new ArrayList<Coordinate>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_COORDINATES; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Coordinate coordinate = new Coordinate(); 
      coordinate.setID(Double.parseDouble(cursor.getString(0))); 
      coordinate.setLat(Double.parseDouble(cursor.getString(1))); 
      coordinate.setLng(Double.parseDouble(cursor.getString(2))); 
      // Adding contact to list 
      coordinateList.add(coordinate); 
     } while (cursor.moveToNext()); 
    } 

    // return coordinate list 
    return coordinateList; 
} 

随着getAllCoordinate你把所有数据库中的协调和生成对象的数组,你可以用阅读和访问单个latlng。 也许代码是不完美的,如果你使用,照顾一些错误。 Here a good guide for database