我有一个包含多个纬度和经度坐标的 JSON 文件。有了这些数据,我想创建多个谷歌地图标记。
我尝试使用 for 循环解析 JSON 文件,并将长整型和纬度保存在双精度变量中以映射它们。
` @Override
public void onMapReady(GoogleMap googleMap) {
jsonParse();
mMap = googleMap;
/* // Add a marker in Sydney and move the camera
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));*/
}
private void jsonParse() {
String url = "https://api.myjson.com/bins/kp9wz";
Log.d(TAG, "jsonParse: is now in jsonParse ");
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, "onResponse: is before try");
try {
JSONArray jsonArray = response.getJSONArray("addresses");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject address = jsonArray.getJSONObject(i);
String firstName = address.getString("name");
Double latitude = Double.parseDouble(address.getString("latitude"));
Double longitude = Double.parseDouble(address.getString("longitude"));
LatLng sydney = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(sydney).title("Test Markers"));
}
Log.d(TAG, "onResponse: is after for loop");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mQueue.add(request);
}`
您可能需要正确缩放相机才能正确渲染内容。 添加标记后,请尝试如下操作:
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, DEFAULT_ZOOM_LEVEL));
https://api.myjson.com/bins/kp9wz 处的文件包含雇员、名字、年龄等。 它不包含"名称","纬度"或"经度">