2012-10-02 36 views
0

我想從我的數據庫中獲取shop_name的緯度和經度,所以我可以使用它從我的位置獲取方向。如何通過shop_name獲取經度和緯度並將其顯示爲地圖?

這裏是我的地圖活動:

public class SearchLocation extends MapActivity { 
private MapView mapView; 
private LocationManager locManager; 
private LocationListener locListener; 

location_dao location_dao = new location_dao(); 

String shopname = "0", address = "0", phone_number = "0"; 

public CharSequence lat = "0", lng = "0", lat2 = "0", lng2 = "0"; 

LocationManager mlocManager; 
LocationListener mlocListener; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map_shoprepair); 

    final ActionBar actionBar = (ActionBar) findViewById(R.id.actionbar); 
    actionBar.setTitle(getString(R.string.app_name)); 

    actionBar.setHomeAction(new IntentAction(this, new Intent(this, 
      Home_Activity.class), R.drawable.home)); 

    initMap(); 
    initLocationManager(); 
} 

private void initMap() { 
    mapView = (MapView) findViewById(R.id.map_view); 
    mapView.setBuiltInZoomControls(true); 
    mapView.displayZoomControls(true); 
    mapView.getController().setZoom(15); 
    mapView.setSatellite(false); 

} 

private void initLocationManager() { 
    locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    locListener = new LocationListener() { 
     //method ini akan dijalankan apabila koordinat GPS berubah 
     public void onLocationChanged(Location newLocation) { 
      tampilkanPosisikeMap(newLocation); 
     } 

     public void onProviderDisabled(String arg0) { 
     } 

     public void onProviderEnabled(String arg0) { 
     } 

     public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
     } 
    }; 
    locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
      locListener); 

} 

protected void tampilkanPosisikeMap(Location newLocation) { 
    List overlays = mapView.getOverlays(); 

    // first remove old overlay 
    if (overlays.size() > 0) { 
     for (Iterator iterator = overlays.iterator(); iterator.hasNext();) { 
      iterator.next(); 
      iterator.remove(); 
     } 
    } 

    // transform the location to a geopoint 
    GeoPoint geopoint = new GeoPoint(
    (int) (newLocation.getLatitude() * 1E6), (int) (newLocation.getLongitude() * 1E6)); 

    // initialize icon 
    Drawable icon = getResources().getDrawable(R.drawable.marker1); 
    icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight()); 

    // create my overlay and show it 
    mapsOverlay overlay = new mapsOverlay(icon); 
    OverlayItem item = new OverlayItem(geopoint, "My Location", null); 
    overlay.addItem(item); 
    mapView.getOverlays().add(overlay); 

    // move to location 
    mapView.getController().animateTo(geopoint); 

    // redraw map 
    mapView.postInvalidate(); 
} 



public class MyLocationListener implements LocationListener { 
    @Override 
    public void onLocationChanged(final Location loc) { 
     SearchLocation.this.parsingGetServerLocationData(shopname); 

     if (lat != "0" && lng != "0") { 
      loc.getLatitude(); 

      loc.getLongitude(); 

      mlocManager.removeUpdates(this); 
      lat2 = String.valueOf(loc.getLatitude()); 
      lng2 = String.valueOf(loc.getLongitude()); 

      Location bLocation = new Location("reverseGeocoded"); 
      bLocation.setLatitude(Double.parseDouble((String) lat2)); 
      bLocation.setLongitude(Double.parseDouble((String) lng2)); 
      Location aLocation = new Location("reverseGeocoded"); 
      aLocation.setLatitude(Double.parseDouble((String) lat)); 
      aLocation.setLongitude(Double.parseDouble((String) lng)); 

      Location myLocation = LocationHelper 
        .getLastLocation(getBaseContext()); 

      int distance = (int) aLocation.distanceTo(bLocation); 

      // handler.sendEmptyMessage(0); 

      // Toast.makeText(searchLocation.this, "Your distance: " + 
      // distance + " Meter", Toast.LENGTH_SHORT).show(); 

      Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=" 
        + myLocation.getLatitude() + "%20" 
        + myLocation.getLongitude() + "&daddr=" + lat + "%20" 
        + lng + "&hl=en"); 
      Intent it = new Intent(Intent.ACTION_VIEW, uri); 

      startActivity(it); 
      lat = "0"; 
      lng = "0"; 
     } else { 
      // handler.sendEmptyMessage(0); 
      // Toast.makeText(searchLocation.this, "no data found", 
      // Toast.LENGTH_LONG).show(); 
     } 
    } 

    public void onProviderDisabled(String provider) { 
     Toast.makeText(getApplicationContext(), 
       "Gps Disabled, Switch to Network", Toast.LENGTH_SHORT) 
       .show(); 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Toast.makeText(getApplicationContext(), "Gps Enabled", 
       Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
} 

public void parsingGetServerLocationData(String shop_name) { 
    try { 
     JSONArray jArray = new JSONArray(
       location_dao.getServerLocationData(shop_name)); 
     for (int i = 0; i < jArray.length(); i++) { 
      JSONObject json_data = jArray.getJSONObject(i); 
      // Get an output to the screen 
      shopname = json_data.getString("SHOP_NAME"); 
      lat = json_data.getString("LATITUDE"); 
      lng = json_data.getString("LONGITUDE"); 

      Log.e("log_tag", 
        "parsingGetServerLocationData" + shopname.toString()); 
     } 

    } catch (JSONException e) { 
     // TODO: handle exception 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
     shopname = "0"; 
     lat = "0"; 
     lng = "0"; 
    } 

} 

public void parsingGetServerDetailLocationData(String shop_name) 
{ 
    try{ 
      JSONArray jArray = new JSONArray(location_dao.getServerDetailLocationData(shop_name)); 
      for(int i=0;i<jArray.length();i++){ 
       JSONObject json_data = jArray.getJSONObject(i); 
       //Get an output to the screen     
       shopname = json_data.getString("SHOP_NAME"); 
       address = json_data.getString("ADDRESS"); 
       phone_number = json_data.getString("PHONE_NUMBER"); 

       Log.e("log_tag", "parsingGetServerDetailLocationData: "+shopname.toString()); 
      } 
     }catch(JSONException e){ 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
      shopname = "0"; 
      address = "0"; 
      phone_number = "0"; 
     } 
} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
}} 

,這裏是我的代碼來調用地圖的活動:

​​

enter image description here

,這裏是我的logcat:

10-02 22:40:32.859:E/AndroidRun時間(4375):android.view.WindowManager $ BadTokenException:無法添加窗口 - 令牌[email protected]無效;你的活動正在運行? 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.view.ViewRoot.setView(ViewRoot.java:532) 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.view.Window $ LocalWindowManager.addView(Window.java:424) 10-02 22:40:32.859:E/AndroidRuntime(4375):在機器人。 app.Dialog.show(Dialog.java:241) 10-02 22:40:32.859:E/AndroidRuntime(4375):at com.wilis.hellotabwidget.Tab_Shop_Repair_ListView_Activity $ 1.gotResult(Tab_Shop_Repair_ListView_Activity.java:75) 10- 02 22:40:32.859:E/AndroidRuntime(4375):在com.wilis.dao.bike_shop_dao $ 1.gotResult (bike_shop_dao.java:84) 10-02 22:40:32.859:E/AndroidRuntime(4375):在com.wilis.connections.ConnectionHandler.handleMessage(ConnectionHandler.java:68) 10-02 22:40:32.859 :E/AndroidRuntime(4375):在android.os.Handler.dispatchMessage(Handler.java:99) 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.os.Looper.loop(活套的.java:130) 10-02 22:40:32.859:E/AndroidRuntime(4375):在android.app.ActivityThread.main(ActivityThread.java:3687) 10-02 22:40:32.859:E/AndroidRuntime (4375):在java.lang.reflect.Method.invokeNative(本機方法) 10-02 22:40:32.859:E/AndroidRuntime(4375):在java.lang.reflect.Method.invoke(Method.java: 507) 10-02 22:40:32.859:E/AndroidRuntime(4375):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:867) 10-02 22:40:32.859:E/AndroidRuntime(4375):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 10-02 22:40:32.859:E/AndroidRuntime( 4375):在dalvik.system.NativeStart.main(本機方法) 10-02 22:41:44.609:E/HttpResponse對象(4493):{ 「結果」:1, 「數據」:[{ 「0」:」 Toko Sepeda Alam Baru「,」shop_name「:」Toko Sepeda Alam Baru「,」1「:」Jl。 Malioboro No. 151「,」地址「:」Jl。 Malioboro No. 151「,」2「:」0274514903「,」phone_number「:」0274514903「},{」0「:」Toko Sepeda Tri Jaya「,」shop_name「:」Toko Sepeda Tri Jaya「,」1「 「JL。 Bridjend。 Katamso 210 -212「,」address「:」Jl。 Bridjend。 Katamso 210 -212「,」2「:」0274375180「,」phone_number「:」0274375180「},{」0「:」Sinar Makmur「,」shop_name「:」Sinar Makmur「,」1「:」Jl。 Brigjen Katamso 92B「,」address「:」Jl。 Brigjen Katamso 92B「,」2「:」0274378352「,」phone_number「:」0274378352「},{」0「:」Orion「,」shop_name「:」Orion「,」1「:」Jl Brigjen Katamso 56「 「地址」:「Jl Brigjen Katamso 56」,「2」:「0274374986」,「phone_number」:「0274374986」},{「0」:「Pasar Sepeda PPSY」,「shop_name」:「Pasar Sepeda PPSY」 1 「:」 JL。 Menteri Supeno,Sorosutan「,」地址「:」Jl。 Menteri Supeno,Sorosutan「,」2「:」 - 「,」phone_number「:」 - 「},{」0「:」Toko Sepeda Adi Mitra「,」shop_name「:」Toko Sepeda Adi Mitra「,」1「 「JL。 Mayjen Sutoyo 09「,」地址「:」Jl。 Mayjen Sutoyo 09「,」2「:」0274375199「,」phone_number「:」0274375199「},{」0「:」Pasar Sepeda GAPPSTA「,」shop_name「:」Pasar Sepeda GAPPSTA「,」1「:」Jl。公噸。 Haryono 「 」地址「:」 JL。公噸。 Haryono「,」2「:」 - 「,」phone_number「:」 - 「},{」0「:」Pasar Sepeda Terban「,」shop_name「:」Pasar Sepeda Terban「,」1「:」Jl。C. Simanjuntak 「」 地址 「:」 JL。 C. Simanjuntak 「」 2 「:」 - 「」 PHONE_NUMBER 「:」 - 「},{」 0 「:」 自行車商店馬可波羅 「」 shop_name 「:」 自行車商店馬可波羅 「」 1 「:」 JL。 Sosrowijayan號11 「」 地址 「:」 JL。 Sosrowijayan號11 「」 2 「:」 0274587636 「」 PHONE_NUMBER 「:」 0274587636 「},{」 0 「:」 自行車商店江左再也 「」 shop_name 「:」 自行車商店江左再也 「」 1 「:」 JL。 CRC。達蘭第72號 「」 地址 「:」 JL。 CRC。達蘭第72號 「」 2 「:」 0274515605 「」 PHONE_NUMBER 「:」 0274515605 「},{」 0 「:」 商店自行車聯合 「」 shop_name 「:」 商店自行車聯合 「」 1 「:」 JL。 P.蒂博尼哥羅42 「」 地址 「:」 JL。 P.蒂博尼哥羅42 「」 2 「:」 0274518375 「」 PHONE_NUMBER 「:」 0274518375 「},{」 0 「:」 自行車商店塔曼紗麗英達 「」 shop_name 「:」 自行車商店塔曼紗麗英達 「」 1 「:」 哈希姆Jl.Wachid 129 「」 地址 「:」 哈希姆Jl.Wachid 129 「」 2 「:」 - 「」 PHONE_NUMBER 「:」 - 「},{」 0 「:」 問候自行車商店」, 「shop_name」: 「問候自行車商店」, 「1」: 「Jl.Wachid Hasyim 19」, 「地址」: 「Jl.Wachid Hasyim 19」, 「2」: 「0274374913」, 「PHONE_NUMBER」: 「0274374913」} { 「0」: 「AB自行車」, 「shop_name」: 「AB自行車」, 「1」:「JL。居屋Cokroaminoto 45 「」 地址 「:」 JL。 HOS Cokroaminoto 45 「」 2 「:」 0274618027 「」 PHONE_NUMBER 「:」 0274618027 「},{」 0 「:」 印再也薩克蒂 「」 shop_name 「:」 印再也薩克蒂 「」 1 「:」 JL。何Tjokroaminoto號157 B 「」 地址 「:」 JL。何Tjokroaminoto號157 B 「」 2 「:」 0274620188 「」 PHONE_NUMBER 「:」 0274620188 「},{」 0 「:」 Rodalink自行車商店 「」 shop_name 「:」 Rodalink自行車商店 「」 1 「:」 JL。 Laskda距離Adisucipto公里6號155C 「」 地址 「:」 JL。 Laskda距離Adisucipto公里6號155C 「」 2 「:」 0274487229 「」 PHONE_NUMBER 「:」 0274487229 「},{」 0 「:」 佩德羅坑店(中心) 「」 shop_name 「:」 佩德羅坑店(中心) 「」 1「 「惹蘭。 Kebon阿貢4.6公里洛杉磯佳能,Godean「」地址‘:’惹蘭。 Kebon阿貢4.6公里洛佳能,Godean 「」 2 「:」 0816972823 「」 PHONE_NUMBER 「:」 0816972823 「},{」 0 「:」 佩德羅坑店(分公司) 「」 shop_name 「:」 佩德羅坑店(分公司) 「」 1 「:」 Godean公里9,Godean 「」 地址 「:」 Godean公里9,Godean 「」 2 「:」 02747171665 「」 PHONE_NUMBER 「:」 02747171665 「},{」 0 「:」 佩德羅坑店(分公司) 「」 shop_name 「:」 佩德羅坑店(分公司) 「」 1 「:」 惹。北緣(環線),Karangnongko,Maguwo,DEPOK,Sleman 「」 地址 「:」 惹蘭。北環(環形路),Karangnongko,Maguwo,DEPOK,Sleman 「」 2 「:」 085 729 075 277 「」 PHONE_NUMBER 「:」 085 729 075 277 「},{」 0 「:」 Nurhayati自行車 「」 shop_name 「:」 Nurhayati自行車「 , 「1」: 「高速公路Cebongan Sleman」, 「地址」: 「高速公路Cebongan Sleman」, 「2」: 「 - 」, 「PHONE_NUMBER」: 「 - 」},{ 「0」: 「愛自行車」, 「shop_name」: 「愛自行車」, 「1」: 「Gandok,剛suryo 16,Condongcatur,DEPOK,Sleman」, 「地址」: 「Gandok,剛suryo 16,Condongcatur,DEPOK,Sleman」,「 2 「:」 085 743 919 166 「」 PHONE_NUMBER 「:」 085 743 919 166「}]} 10-02 22:41:50 749:d/PhoneWindow(4493):無法保存室友查看具有焦點因爲聚焦的視圖com.android。 [email protected]沒有ID 10-02 22:41:52 549:E/ZoomButtonsController(4493):不能使變焦控制器可見如果所有者視圖未附加到窗口 10-02 22:41:52 609:I/MapActivity(4493):處理網絡變更通知:連接

這是從我的數據庫獲取所有數據,但我想說明當我點擊只有一個SHOPNAME。

10-02 22:41:44.609: E/HttpResponse(4493): {"result":1,"data":[{"0":"Toko Sepeda Alam Baru","shop_name":"Toko Sepeda Alam Baru","1":"Jl. Malioboro No. 151","address":"Jl. Malioboro No. 151","2":"0274514903","phone_number":"0274514903"},{"0":"Toko Sepeda Tri Jaya","shop_name":"Toko Sepeda Tri Jaya","1":"Jl. Bridjend. Katamso 210 -212","address":"Jl. Bridjend. Katamso 210 -212","2":"0274375180","phone_number":"0274375180"},{"0":"Sinar Makmur","shop_name":"Sinar Makmur","1":"Jl. Brigjen Katamso 92B","address":"Jl. Brigjen Katamso 92B","2":"0274378352","phone_number":"0274378352"},{"0":"Orion","shop_name":"Orion","1":"Jl Brigjen Katamso 56","address":"Jl Brigjen Katamso 56","2":"0274374986","phone_number":"0274374986"},{"0":"Pasar Sepeda PPSY","shop_name":"Pasar Sepeda PPSY","1":"Jl. Menteri Supeno, Sorosutan","address":"Jl. Menteri Supeno, Sorosutan","2":"-","phone_number":"-"},{"0":"Toko Sepeda Adi Mitra","shop_name":"Toko Sepeda Adi Mitra","1":"Jl. Mayjen Sutoyo 09","address":"Jl. Mayjen Sutoyo 09","2":"0274375199","phone_number":"0274375199"},{"0":"Pasar Sepeda GAPPSTA","shop_name":"Pasar Sepeda GAPPSTA","1":"Jl. MT. Haryono","address":"Jl. MT. Haryono","2":"-","phone_number":"-"},{"0":"Pasar Sepeda Terban","shop_name":"Pasar Sepeda Terban","1":"Jl. C. Simanjuntak","address":"Jl. C. Simanjuntak","2":"-","phone_number":"-"},{"0":"Toko Sepeda Marcopolo","shop_name":"Toko Sepeda Marcopolo","1":"Jl. Sosrowijayan No. 11","address":"Jl. Sosrowijayan No. 11","2":"0274587636","phone_number":"0274587636"},{"0":"Toko Sepeda Esa Jaya","shop_name":"Toko Sepeda Esa Jaya","1":"Jl. KHA. Dahlan No 72","address":"Jl. KHA. Dahlan No 72","2":"0274515605","phone_number":"0274515605"},{"0":"Toko Sepeda United","shop_name":"Toko Sepeda United","1":"Jl. P. Diponegoro 42","address":"Jl. P. Diponegoro 42","2":"0274518375","phone_number":"0274518375"},{"0":"Toko Sepeda Taman Sari Indah","shop_name":"Toko Sepeda Taman Sari Indah","1":"Jl.Wachid Hasyim 129","address":"Jl.Wachid Hasyim 129","2":"-","phone_number":"-"},{"0":"Toko Sepeda Salam","shop_name":"Toko Sepeda Salam","1":"Jl.Wachid Hasyim 19","address":"Jl.Wachid Hasyim 19","2":"0274374913","phone_number":"0274374913"},{"0":"AB Bike","shop_name":"AB Bike","1":"Jl. HOS Cokroaminoto No.45","address":"Jl. HOS Cokroaminoto No.45","2":"0274618027","phone_number":"0274618027"},{"0":"Indo Jaya Sakti","shop_name":"Indo Jaya Sakti","1":"Jl. Hos Cokroaminoto No. 157 B","address":"Jl. Hos Cokroaminoto No. 157 B","2":"0274620188","phone_number":"0274620188"},{"0":"Toko Sepeda Rodalink","shop_name":"Toko Sepeda Rodalink","1":"Jl. Laskda Adisucipto Km 6 No. 155C","address":"Jl. Laskda Adisucipto Km 6 No. 155C","2":"0274487229","phone_number":"0274487229"},{"0":"Pedro Pit Shop (Pusat)","shop_name":"Pedro Pit Shop (Pusat)","1":"Jln. Kebon Agung Km 4,6 Los Danon, Godean","address":"Jln. Kebon Agung Km 4,6 Los Danon, Godean","2":"0816972823","phone_number":"0816972823"},{"0":"Pedro Pit Shop (Cabang)","shop_name":"Pedro Pit Shop (Cabang)","1":"Godean Km 9, Godean","address":"Godean Km 9, Godean","2":"02747171665","phone_number":"02747171665"},{"0":"Pedro Pit Shop (Cabang)","shop_name":"Pedro Pit Shop (Cabang)","1":"Jln. Lingkar Utara (ringroad), Karangnongko, Maguwo, Depok, Sleman","address":"Jln. Lingkar Utara (ringroad), Karangnongko, Maguwo, Depok, Sleman","2":"085729075277","phone_number":"085729075277"},{"0":"Nurhayati Bike","shop_name":"Nurhayati Bike","1":"Jalan Raya Cebongan Sleman","address":"Jalan Raya Cebongan Sleman","2":"-","phone_number":"-"},{"0":"Love Sepeda","shop_name":"Love Sepeda","1":"Gandok, Gang suryo No.16, Condongcatur, Depok, Sleman","address":"Gandok, Gang suryo No.16, Condongcatur, Depok, Sleman","2":"085743919166","phone_number":"085743919166"}]} 

我怎樣才能獲得通過shop_name緯度和經度? 什麼,我在我的代碼做錯誤,請幫助我。之前謝謝。

+0

您的文章是太長了 - 沒有人真的會去通過它一行一行地找到你所需要的。下一次嘗試將其降低到最小的情況下。 –

+0

這也是這一個http://stackoverflow.com/questions/12693579/的副本 - 請不要這樣做,刪除它們 – NickT

+0

@NickT感謝您的建議人之一:) –

回答

0

你可以看看Geocoder.getFromLocationName()javadoc),向您傳遞儘可能多的你有店鋪的地址在你的JSON結構。

所檢索Address對象(一個或多個)具有緯度和經度可以傳遞到地圖。

相關問題