JSON 和位置距离计算
JSON and location distance calculate
我正在计划这个。第一个设备从 json 获取所有位置和信息。 Json 包括纬度和经度。之后,计算每个项目到设备的距离。如果它小于 x 号,则在列表视图中显示它。我曾经使用 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 把它放在列表中其他 return 得到 json 项目
我需要一些代码。
你有用坐标计算两点距离的代码吗?
我用网页制作了这样的东西。
您可以将所有坐标保存到数据库中,当您拥有 phone 位置时,您可以取回您位置附近的所有坐标(如过滤器)。
之后,您可以使用您的代码检查 坐标是否在您的 X 范围内,并将其放入包含您的坐标的 class 中。
你的坐标class:
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,您可以获取数据库中的所有坐标并生成一个对象数组,您可以使用 for 读取该数组并访问单个 lat
和 lng
。
如果您使用它来注意一些错误,那么代码可能并不完美。
Here a good guide for database
我正在计划这个。第一个设备从 json 获取所有位置和信息。 Json 包括纬度和经度。之后,计算每个项目到设备的距离。如果它小于 x 号,则在列表视图中显示它。我曾经使用 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 把它放在列表中其他 return 得到 json 项目
我需要一些代码。
你有用坐标计算两点距离的代码吗? 我用网页制作了这样的东西。 您可以将所有坐标保存到数据库中,当您拥有 phone 位置时,您可以取回您位置附近的所有坐标(如过滤器)。 之后,您可以使用您的代码检查 坐标是否在您的 X 范围内,并将其放入包含您的坐标的 class 中。
你的坐标class:
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,您可以获取数据库中的所有坐标并生成一个对象数组,您可以使用 for 读取该数组并访问单个 lat
和 lng
。
如果您使用它来注意一些错误,那么代码可能并不完美。
Here a good guide for database