Я пытаюсь нарисовать маршрут на картах динамически, когда пользователь перетаскивает контакты. Я могу нарисовать маршрут между двумя геотомами, но не смогу проложить маршрут между ними.Рисование маршрута на карте при изменении маркеров/контактов?
Am используя this код для размещения контактов на карте, который использует ItemizedOverlay
. И я использовал следующие фрагменты, чтобы получить файл kml и получить последовательные геотоны на дороге от источника и до места назначения.
public static String getUrl(double fromLat, double fromLon, double toLat,
double toLon) {// connect to map web service
System.out.println("getting URL");
StringBuffer urlString = new StringBuffer();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");// from
urlString.append(Double.toString(fromLat));
urlString.append(",");
urlString.append(Double.toString(fromLon));
urlString.append("&daddr=");// to
urlString.append(Double.toString(toLat));
urlString.append(",");
urlString.append(Double.toString(toLon));
urlString.append("&ie=UTF8&0&om=0&output=kml");
return urlString.toString();
}
И
url = new URL(urlString.toString());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(urlConnection.getInputStream());
if (document.getElementsByTagName("GeometryCollection").getLength() > 0) {
String path = document.getElementsByTagName("GeometryCollection")
.item(0).getFirstChild().getFirstChild().getFirstChild()
.getNodeValue();
if (path != null && path.trim().length() > 0) {
String[] pairs = path.trim().split(" ");
String[] lngLat = pairs[0].split(",");
if (lngLat.length < 3)
lngLat = pairs[1].split(",");
GeoPoint startGP = new GeoPoint(
(int) (Double.parseDouble(lngLat[1]) * 1E6),
(int) (Double.parseDouble(lngLat[0]) * 1E6));
GeoPoint gp1;
GeoPoint gp2 = startGP;
for (int i = 1; i < pairs.length; i++)
{
lngLat = pairs[i].split(",");
gp1 = gp2;
gp2 = new GeoPoint(
(int) (Double.parseDouble(lngLat[1]) * 1E6),
(int) (Double.parseDouble(lngLat[0]) * 1E6));
map.invalidate();
final float[] results = new float[3];
Location.distanceBetween(gp1.getLatitudeE6()/1E6, gp1.getLongitudeE6()/1E6, gp2.getLatitudeE6()/1E6, gp2.getLongitudeE6()/1E6, results);
distance += results[0];
Здесь мне нужно добавить эти geopoints (GP1 & GP2) к накладкам рисовать на карте, перекрывая draw()
метод. Как только я получу эти геодезии, я смогу нарисовать маршрут. Но не удалось отправить геототы. Застрял здесь.