2012-12-17 58 views
1

我想要显示用户当前位置与他在搜索视图中输入的位置之间的路线。这里是我的代码为onQueryTextSubmit方法在地图上绘制路线的最简单方法

@Override 
    public boolean onQueryTextSubmit(String query) { 
     // TODO Auto-generated method stub 
     try 
     { 
      if(direction.isChecked() == false) 
      { 
       gc = new Geocoder(this); 

       addresses = gc.getFromLocationName(query,5); 
       String add = ""; 
       if (addresses.size() > 0) 
       { 
        p = new GeoPoint(
          (int) (addresses.get(0).getLatitude() * 1E6), 
          (int) (addresses.get(0).getLongitude() * 1E6)); 
        mc.animateTo(p); 
        mc.setZoom(9); 
        mapView.invalidate(); 

        searchView.clearFocus(); 
       } 
       else 
       { 
        Toast.makeText(this, " Location not found.", 
           Toast.LENGTH_LONG).show(); 
       } 
       return true; 
      } 
      else 
      { 
      // draw a route between the locations      
       return true; 
      } 
     } 
     catch(IOException ex) 
     { 

     } 

     return false; 
    } 

什么是最简单的方法呢? (例子会帮助我了解更多)

谢谢

回答

4

一旦你有你的目的地的GeoPoint你可以做一个HTTP请求,在这个地址到谷歌:

String url = "http://maps.google.com/maps?f=d&hl=es&saddr="+ origin +"&daddr=" + destination + "&ie=UTF8&om=0&output=dragdir"; 

为始发地和目的地(纬度,经度)点。

例如,this要求给你这个JSON:

{tooltipHtml:" (86,4 km/55 minutos)",polylines:[{id:"route0",points:"wa{uFt|[email protected][email protected][[email protected]@X[[email protected]??tMsBrIuBrDoA~J}EbC{@[email protected]`[email protected]`McA|KkAzCK|[email protected]@[email protected]`@[email protected]\\[[email protected]@[email protected]{BnG}[email protected]`[email protected]|A}[email protected]`[email protected]@}[email protected]]iGcAkLUyGB{K^[email protected]_EfC_PtAqOlB}X|AiNrCyTnE{WjDqOtCqK~DoMhHoSvX}[email protected]~KeYpI}[email protected]`@[email protected]`@[email protected]@qE_BgTMuEEoIDsJxA_`@[email protected][email protected]]wGOcLLeJZiG\\[email protected]{[email protected]{F~CuGbBuCdE_GlE}[email protected][email protected]@iFZeJBiYJ{[email protected]{HpAaMdDwRzB{IrCsIrCoGbHiMzGmJnEaFjCeCdCwBfE}CdC_BzHiErNyG~NsFdN}DnQuDzK}[email protected][email protected]|GaGtEiF~GwIfGsGdD{CtEcDpQwKvCwBdFeE|HmIxEoGtCwElLiVfDeGxDkFvNsOvDaFbDqFnI{PtBwDfDiF`FkG~UeVfC{ClD{EpMyRzDyEdE_EvHwFpGiDfDsA|[email protected]@[email protected]_BnGmCpHiEbVgPzBmBhBoB|B_D|AqCdAaCtGaRvAuC~EeI??jSk[zBcEnAuCnD}[email protected]`[email protected]@[email protected][email protected]@qBcB}[email protected]?kEJuCR}[email protected]@qCxAqDtCmEtAwAfCuB|[email protected]@[email protected][email protected]{DfDuC`[email protected]`[email protected]@vD}ArA{@xBmBlBcC~A{[email protected]|@oD^}[email protected]@{BzAwDzBsDpBaCnBiBlB_CnFoIfD_ExAoAfEgC`[email protected]{FhByDtBsFZcBPiBTqIRiB\\[email protected]@uA`AeApBqAtB]xBExS`@[email protected]@[email protected]@[email protected]@[email protected]}[email protected]{QlE}FnFeF`CeBrDsB`EaBlDaApE{@[email protected]{[email protected]{@hHwIdOqRnA{[email protected]@fBmFzAcGtA{I`@[email protected][email protected]{DvRmW`BaC`[email protected]@[email protected]}G`@mC`AwD~AuDhJ{OdCuGfA{[email protected]@[email protected]^[email protected]}HbAkDhEaX^[email protected]_EL}[email protected]|@uBjOuVxIgQ~DsK|[email protected]_F`AqK^[email protected][email protected]\\[email protected]@eHbDgPzDuNlAuD~F{O~BoF`AiBnBoCzFwF~CoDlBcEfAaD|[email protected]@yBtAgD`AaBbHsJ|CsCrP_LpBwB`[email protected]}BhBs\\[email protected]_B|CuDlJcQbA{[email protected]]z`@[email protected][rBuD`B_EtCkIvKs]nCaHlEuIfHaMbMoRv[[email protected]@[email protected]|C{[email protected][bQsHrBoA~AsAbAqA|GsMtBiC|B_BlHwD`[email protected]{AnAmB|@wB|@[email protected][email protected]}kA|[email protected]~TiGnNmC|DkB??xCoApDU|@[email protected]\\[email protected]@^cC??pBkHvFy][email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@jAoB\\_A\\_BnBePTCN[A[[email protected]@[email protected]^kE??rAJrB][email protected][tAuA",levels:"[email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected]@[email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected][email protected]????????????BB???B",numLevels:4,zoomFactor:16}]} 

字符串以名称points是你要画在地图上的折线。但在绘制之前,您必须对其进行解码。看看here这个职责。

一旦你有你的GeoPoint列表,你可以在你的地图上绘制它。为此,如果您使用google api v1,则需要overlay。我建议你看看api v2。通过GoogleMap类和PolylineOptions中的addPolyline方法添加多段线以映射对象更为容易。

希望有所帮助。

+0

感谢名单了很多....跟随这些链接,终于得到它的工作 –

+0

很高兴我可以帮助:) –

0

通过两种方式我们可以在地图上绘制路线。

1.使用android系统中 地图叠加的概念2.使用这个网址 http://maps.google.com/maps?&saddr=from纬度值,经度从价值& DADDR =纬度值,经度值

相关问题