BurkusCat Ответов: 0

Как создать полигональный маршрут на android Google maps?


Привет,
Я использую API Google Location Services на Android, чтобы периодически сохранять широту/долготу, на которой они находились. Я пытаюсь создать полигон вокруг этих точек, чтобы создать маршрут того места, где они были. Я хочу, чтобы маршрут учитывал точность определения местоположения для каждой из точек, поэтому вместо линии он будет выглядеть как змея, которая расширяется и сжимается по мере изменения точности GPS.

Этот это что-то близкое к тому, что я хочу, однако это полилиния со стандартной толщиной по всей длине.

Позже я хочу иметь возможность проверить, вернулся ли пользователь внутри этого полигона.

Заранее спасибо за любую помощь!
Ронан

Что я уже пробовал:

Я использую location. getAccuracy () для определения точности опрошенного местоположения, и моя цель состоит в том, чтобы включить радиус вокруг точки на основе этого. Эта точность затем используется для создания алмаза из четырех точек. Хотя это точно показано для одного местоположения, при добавлении нескольких местоположений полигон выглядит очень неправильно с точками, пересекающимися друг с другом.

Я думал о том, чтобы нарисовать один большой полигон вокруг всех местоположений, но это не сработало бы, так как в итоге я получил бы область вместо маршрута, полигон не показывал бы точно, где на самом деле путешествовал пользователь.

Как я генерирую полигональные точки в данный момент:
List<LatLng> points = new ArrayList<LatLng>();

for (Location location : locations) {
    float accuracy = location.getAccuracy();
    System.out.println(accuracy);
    points.add(SphericalUtil.computeOffset(new LatLng(location.getLatitude(), location.getLongitude()), accuracy, 0));
    points.add(SphericalUtil.computeOffset(new LatLng(location.getLatitude(), location.getLongitude()), accuracy, 90));
    points.add(SphericalUtil.computeOffset(new LatLng(location.getLatitude(), location.getLongitude()), accuracy, 180));
    points.add(SphericalUtil.computeOffset(new LatLng(location.getLatitude(), location.getLongitude()), accuracy, 270));
}



Как я рисую многоугольник на карте:
PolygonOptions polygonOptions = new PolygonOptions();

	for (LatLng latLng : route.getPolygonPoints()) {
		polygonOptions.add(latLng);
	}

	mMap.clear();
	Polygon polygon = mMap.addPolygon(polygonOptions.strokeColor(Color.argb(255, 49, 101, 187)).fillColor(Color.argb(100, 49, 101, 187)));

0 Ответов