【问题标题】:JSON URL contains LatLng, How to Show it on Google Map?JSON URL 包含 LatLng,如何在谷歌地图上显示?
【发布时间】:2015-10-14 06:45:12
【问题描述】:

我有一个包含很多 LatLng 的 URL。我必须解析所有这些并在 Google Map 上显示标记我是 Android 新手。所以请帮助我。

我的 JSON 网址在这里 - 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) {}
}

}

【问题讨论】:

    标签: android json google-maps


    【解决方案1】:

    您可以传递您的 lat long 值并在外部打开地图应用程序。

    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);
    

    【讨论】:

    • 您好 thnxx 快速响应,但让我告诉您,我不想使用 Intent 从外部打开。我必须在谷歌地图上反映的数据
    • 你在你的应用中实现了谷歌地图api吗?
    • 是的,我做到了.. 但不知道如何解析数据并通过显示片段反映在地图上
    • 只传递你的纬度而不是检索当前位置
    【解决方案2】:

    使用这两个 java 和 xml 文件并将您的 lang 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" />
    

    【讨论】:

    • 嗨 raj thnxx 亲爱的..但是我可以问你如何使用 JSON 来完成这项任务。因为我不知道所有的经纬度。我必须从 JSON 中获取所有内容
    • 如果您已从 json 中解析出 lat 和 lon,请使用地图布局启动一个新活动(或替换片段)(将 lat 和 lon 作为意图附加值)。
    猜你喜欢
    • 2014-08-03
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    相关资源
    最近更新 更多