2015-10-14 68 views
-1

我有一个包含很多LatLng的URL。我必须解析所有这些,并在Google Map上显示标记,我是Android新手。所以请帮助我。JSON网址包含LatLng,如何在Google地图上显示它?

我的JSON URL是在这里 - JSON URL for LatLng

和我的代码来获取数据是

public class AsyncTaskParseJson extends AsyncTask<String, String, String> { 

    final String TAG = "AsyncTaskParseJson.java"; 

    // set your json string url here 
    String yourJsonStringUrl = "http://djs-corner.appspot.com/getClosestClubs?lat=40.7600624&lon=-73.98558"; 

    // contacts JSONArray 
    JSONArray dataJsonArr = null; 

    @Override 
    protected void onPreExecute() {} 

    @Override 
    protected String doInBackground(String... arg0) { 

     try { 

      // instantiate our json parser 
      JsonParser jParser = new JsonParser(); 

      // get json string from url 
      JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl); 


      // get the array of users 
      dataJsonArr = json.getJSONArray("0"); 

      // loop through all users 
      for (int i = 0; i < dataJsonArr.length(); i++) { 

       JSONObject c = dataJsonArr.getJSONObject(i); 

       // Storing each json item in variable 
       String zip= c.getString("zip"); 
       String lattitude= c.getString("lat"); 
       String longitude= c.getString("lng"); 

       // show the values in our logcat 
       Log.e(TAG, "Zip: " + zip 
         + ", Lattitude: " + lat 
         + ", Longitude: " + lng); 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String strFromDoInBg) {} 
} 

}

回答

0

你可以通过你的经纬度值长,开放的地图应用程序外部。

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, 
          Uri.parse("http://maps.google.com/maps?saddr=&daddr=" 
            + lattitude+","+longitude)); 
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
        intent.setClassName("com.google.android.apps.maps", 
          "com.google.android.maps.MapsActivity"); 
        startActivity(intent); 
+0

嗨thnxx来回快速响应但让我告诉你,我不想由我们向外开放意图。我必须在Google地图上反映的数据 –

+0

您是否已经在您的应用中实施Google Maps API? – Jas

+0

是的,我做了...但不知道如何解析数据和反映在地图上显示片段 –

0

使用这两个Java和XML文件,并把你的郎LAT在给定的代码

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnMapReadyCallback { 

    // Google Map 
    private GoogleMap googleMap; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     try { 
      // Loading map 
      initilizeMap(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
    @Override 
     public void onMapReady(GoogleMap map) { 
     System.out.println("map ready"); 
      LatLng delhi = new LatLng(your lan, your lat); 

      map.setMyLocationEnabled(true); 
      map.moveCamera(CameraUpdateFactory.newLatLngZoom(delhi, 7)); 

      map.addMarker(new MarkerOptions() 
        .title("Sydney") 
        .snippet("The most populous city in Australia.") 
        .position(delhi)); 
     } 

    private void initilizeMap() { 
     if (googleMap == null) { 
      googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
      LatLng latlng = new LatLng(28.38, 77.12); 

      googleMap.setMyLocationEnabled(true); 
      googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 10)); 

      googleMap.addMarker(new MarkerOptions() 
         .title("Sydney") 
         .snippet("The most populous city in Australia.") 
         .position(latlng)); 
      // check if map is created successfully or not 
      if (googleMap == null) { 
       Toast.makeText(getApplicationContext(), "Sorry! unable to create maps", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     initilizeMap(); 
    } 

} 

xml文件

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <fragment 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.MapFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <!-- Required to show current location --> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
+0

HI raj thnxx亲爱的..但我可以问你我如何通过使用JSON来完成此任务。因为我不知道所有的经纬度。我必须从JSON中获取所有内容 –

+0

如果您已经解析了json中的经纬度和纬度,请使用地图布局开始一个新的活动(或替换一个片段)(以lat和lon作为intent extras)。 – PatrickMA

相关问题