2012-06-23 2 views
-1

Я пытаюсь нарисовать маршрут на картах динамически, когда пользователь перетаскивает контакты. Я могу нарисовать маршрут между двумя геотомами, но не смогу проложить маршрут между ними.Рисование маршрута на карте при изменении маркеров/контактов?

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() метод. Как только я получу эти геодезии, я смогу нарисовать маршрут. Но не удалось отправить геототы. Застрял здесь.

ответ

0

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

Смежные вопросы