2013-07-15 36 views
0

我正在爲我的項目實現語音路線導航Google地圖。但我不知道如何實現這一點。我有起點和終點。我可以在我的應用程序中執行或重定向到手機的默認Google地圖嗎?請指導我..語音路線導航谷歌地圖android

回答

1

過程中的以下網址獲得源和目的地之間的位置的座標

StringBuilder urlString = new StringBuilder(); 
      urlString.append("http://maps.google.com/maps/api/directions/xml?origin="); 
      urlString.append(Double.toString((double)srcGeoPoint.getLatitudeE6()/1.0E6)); 
      urlString.append(","); 
      urlString.append(Double.toString((double)srcGeoPoint.getLongitudeE6()/1.0E6)); 
      urlString.append("&destination=");//to 
      urlString.append(Double.toString((double)destGeoPoint.getLatitudeE6()/1.0E6)); 
      urlString.append(","); 
      urlString.append(Double.toString((double)destGeoPoint.getLongitudeE6()/1.0E6)); 
      urlString.append("&sensor=true&mode=driving"); 

從上面的URL獲得響應後與編碼後下面的方法

private List<GeoPoint> decodePoly(String encoded) { 

      List<GeoPoint> poly = new ArrayList<GeoPoint>(); 
      int index = 0, len = encoded.length(); 
      int lat = 0, lng = 0; 

      while (index < len) { 
       int b, shift = 0, result = 0; 
       do { 
        b = encoded.charAt(index++) - 63; 
        result |= (b & 0x1f) << shift; 
        shift += 5; 
       } while (b >= 0x20); 
       int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
       lat += dlat; 

       shift = 0; 
       result = 0; 
       do { 
        b = encoded.charAt(index++) - 63; 
        result |= (b & 0x1f) << shift; 
        shift += 5; 
       } while (b >= 0x20); 
       int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1)); 
       lng += dlng; 

       GeoPoint p = new GeoPoint((int) (((double) lat/1E5) * 1E6), 
         (int) (((double) lng/1E5) * 1E6)); 
       poly.add(p); 
      } 

      return poly; 
     } 

編碼字符串您使用畫布繪製繪製路徑的位置之間。

注意:對於語音路由,您可以使用TTS(文本到語音)

+0

根據Google隱私政策允許使用TTS嗎? [https://developers.google.com/maps/terms] 10.2節我認爲它不允許,但我不確定。任何人都可以確認嗎? –