Google Maps API and custom polyline route between Markers
Google Maps API и пользовательский маршрут полилинии между маркерами
Я хотел бы создать пользовательский маршрут для приложения Android, я не уверен, какой API мне следует использовать и совместим ли он с Java.
Насколько я знаю, мне нужно использовать путевые точки для построения маршрута (мне не нужно знать расстояние между двумя точками, просто для построения маршрута).
Цель состоит в том, чтобы выбрать опцию из меню сбоку карты и показать один из пользовательских маршрутов между двумя маркерами.
Для начала работы с Google Maps API уже есть множество других хороших ответов. Смотрите здесь полный рабочий пример простого действия с картой. Обратите внимание, что вам также потребуется настроить ключ API для работы с вашим проектом.
Что касается использования API веб-сервиса Google Maps Directions, вам следует сначала прочитать документацию. Вы можете использовать ключ API и включить API в своей консоли разработчика, но в настоящее время он по-прежнему работает без использования ключа API.
Вот базовый код, который вам понадобится, чтобы использовать Google Maps API для рисования полилинии между двумя точками, обратите внимание, что точки, возвращаемые API, закодированы в строке с кодировкой base 64, которую необходимо декодировать.
Во-первых, убедитесь, что в вашем проекте включена библиотека утилит Google Maps Utility, которая будет использоваться для декодирования полилинии в кодировке base64:
PolylineOptionsoptions=newPolylineOptions().width(5).color(Color.MAGENTA).geodesic(true); for (inti=0; i < pointsList.size(); i++) { LatLngpoint= pointsList.get(i); options.add(point); } line = mMap.addPolyline(options);
} }
AsyncTask ссылается на некоторые переменные-члены Activity, а именно на полилинию и GoogleMap, определение Activity будет выглядеть следующим образом:
Вот класс JsonParser, используемый в этом примере, обратите внимание, что это модифицированная версия, обновленная для Android-23, о которой я написал сообщение в блоге:
try { //Receive the response from the server InputStreamin=newBufferedInputStream(conn.getInputStream()); BufferedReaderreader=newBufferedReader(newInputStreamReader(in));
String line; result = newStringBuilder(); while ((line = reader.readLine()) != null) { result.append(line); }