我想从json得到标记

时间:2017-04-16 13:22:15

标签: java android json google-maps

错误是“连接服务时出错”

public  class MarkerTask extends AsyncTask<Void, Void, String> 
{
private static final String LOG_TAG = "ExampleApp";

private static final String SERVICE_URL = "https://192.168.8.103/map1.php";
private GoogleMap mMap;


// Invoked by execute() method of this object
@Override
protected String doInBackground(Void... args) {

    HttpURLConnection conn = null;
    final StringBuilder json = new StringBuilder();
    try {
        // Connect to the web service
        URL url = new URL(SERVICE_URL);
        conn = (HttpURLConnection) url.openConnection();
        InputStreamReader in = new InputStreamReader(conn.getInputStream());

        // Read the JSON data into the StringBuilder
        int read;
        char[] buff = new char[1024];
        while ((read = in.read(buff)) != -1) {
            json.append(buff, 0, read);
        }
    } catch (IOException e) {
        Log.e(LOG_TAG, "Error connecting to service", e);
        //throw new IOException("Error connecting to service", e); //uncaught
    } finally {
        if (conn != null) {
            conn.disconnect();
        }
    }

    return json.toString();
}

// Executed after the complete execution of doInBackground() method
@Override
protected void onPostExecute(String json) {

    try {
        // De-serialize the JSON string into an array of city objects
        JSONArray jsonArray = new JSONArray(json);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObj = jsonArray.getJSONObject(i);

            LatLng latLng = new LatLng(jsonObj.getJSONArray("marker").getDouble(0),
                    jsonObj.getJSONArray("marker").getDouble(1));

            //move CameraPosition on first result
            if (i == 0) {
                CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLng).zoom(13).build();

                mMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));
            }

            // Create a marker for each city in the JSON data.
            mMap.addMarker(new MarkerOptions()
                    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
                    .title(jsonObj.getString("name"))
                    .snippet(Integer.toString(jsonObj.getInt("population")))
                    .position(latLng));
        }
    } catch (JSONException e) {
        Log.e(LOG_TAG, "Error processing JSON", e);
    }

}
}

我的地图活动

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    if (mapFragment != null) {
        //setUpMap();
        new MarkerTask().execute();
    }
}}

0 个答案:

没有答案