2015-02-26 3 views
0

Я хотел бы искать места между двумя заданными расстояниями, используя GeoPoints. Используя в настоящее время api, я думаю, что мог бы сделать что-то вроде этого псевдо-алгоритма:Запрос между расстояниями в Парсе

query.whereWithinKilometers («direction», GlobalData.ownerGeoPoint, MAXIMUM distance);

минуса

query.whereWithinKilometers ("направление", GlobalData.ownerGeoPoint, минимальное расстояние);

Как я могу перевести на настоящий код?

+0

Похоже, вы хотите найти вещи в зоне, подобранной пончиком. Это правильно? – danh

+0

Это правильно, дань. – ElYeante

ответ

1

Наконец я нашел способ сделать это с помощью запроса синтаксического анализа ,

// Do not want locations further than maxDistance 
ParseQuery query = ParseQuery.getQuery("MyData"); 
query.whereWithinKilometers("location", userGeoPoint, maxDistance); 

// Do not want locations closer than minDistance 
ParseQuery<ParseObject> innerQuery = ParseQuery.getQuery("MyData"); 
innerQuery.whereWithinKilometers("location", userGeoPoint, minDistance); 
query.whereDoesNotMatchKeyInQuery("objectId", "objectId", innerQuery); 
1

Вероятно, вам придется тянуть все на максимальном расстоянии от Parse к вашему приложению, а затем в вашем приложении фильтровать все, что ближе, чем минимум.

К счастью, Parse включает некоторое измерение расстояния как часть PFGeoPoint. Проверьте три метода: here.

  1. distanceInRadiansTo:
  2. distanceInMilesTo:
  3. distanceInKilometersTo:

Так что ваш псевдокод является:

(After you get back everything within the outer radius) 

Make a new array (var) called finalList 
For i = 0; i < objects.count; i++ { 
    var gp: PFGeoPoint = objects[i] 
    if gp.distanceInMilesTo:originalGeoPoint >= minimumRadiusInMiles { 
     finalList.push(gp) 
    } 
}