Я исследовал это на Google и ТАК, но я застрял, я думаю, что упускаю что-то фундаментальное. Большинство примеров , которые я видел, не имеют дело с произвольной mapWidth и одной точкой, а только с диапазоном наложения.
У меня есть база данных точек карты, MapView
и Geocoder
. Я могу найти почтовый индекс в моем приложении, и Address
вернул мой Geocoder
.
Используя эту Address
, я могу построить GeoPoint
, выполнить поиск в моей БД и получить список ближайших точек. Проблема возникает из-за попытки zoomToSpan с использованием диапазона, построенного из возвращенной точки Address
и расстояния до ближайшей точки в базе данных.
Я хочу, чтобы промежуток охватывал только две ближайшие точки (если доступны). Вот соответствующий код:
Collections.sort(listingDisplay, mComparator);
listingDisplayAdapter.notifyDataSetChanged();
float spanWidth =0;
if (listingDisplay.size() > 1) {
spanWidth = (float) (2 * distanceFromPoint(listingDisplay.get(1),
current));
} else if (listingDisplay.size() == 1) {
spanWidth = (float) (2 * distanceFromPoint(listingDisplay.get(0),
current));
}
Log.v(TAG, "SpanWidth: " + spanWidth);
// Create span
int minLat = (int) (current.getLatitudeE6() - (spanWidth * 1E6) / 2);
int maxLat = (int) (current.getLatitudeE6() + (spanWidth * 1E6) / 2);
int minLong = (int) (current.getLongitudeE6() - (spanWidth * 1E6) / 2);
int maxLong = (int) (current.getLongitudeE6() + (spanWidth * 1E6) / 2);
// Zoom against span. This appears to create a very small region that doesn't encompass the points
mapController.setCenter(current);
mapController.zoomToSpan(Math.abs( minLat - maxLat ), Math.abs( minLong - maxLong ));
ListingDisplay
содержит список ближайших точек с компаратором, mComparator
сортирует этот список с ближайшими местоположениями к моему возвращенному Address
(GeoPoint
называется: current
) в верхней части список.
Затем я устанавливаю значение spanWidth
на основе ближайшего значения и пытаюсь вычислить диапазон из этого.
У меня такой вопрос, как я могу построить промежуток из заданного расстояния и центральной точки ?