1

我已经使用 Groute url 在画布上的两个地理点之间绘制了一条路径,现在我想知道用户是在绘制的路径上还是错过了它。我没有找到任何解决方案,请建议我。

这是我在两个位置之间找到地理点的网址(http://maps.googleapis.com/maps/api/directions/xml?origin=52.31,16.71&destination=51.27,6.75&sensor=false)

这是我的代码,我已经绘制了我的路线。

     private void fetchData()
{
    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");     
    Log.d("url","::"+urlString.toString());
    HttpURLConnection urlConnection= null; 
    URL url = null; 
    try 
    { 
        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();
        doc = (Document) db.parse(urlConnection.getInputStream());//Util.XMLfromString(response);
    }catch (MalformedURLException e){ 
        e.printStackTrace(); 
    }catch (IOException e){ 
        e.printStackTrace(); 
    }catch (ParserConfigurationException e){ 
        e.printStackTrace(); 
    }
    catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

    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));
        System.out.println("geopoints = " +p);
        poly.add(p);
    }

    return poly;
}

提前致谢

4

0 回答 0