我正在制作一个项目示例,以从000webhost获取json坐标并在Android的地图中显示标记。 这是我的Java主要代码:
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener,GoogleMap.OnMarkerClickListener {
private GoogleMap mMap;
public static final String URL="http://rrsaikat.mydiscussion.net/myjson/location.php";
private JSONArray result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
{
return;
}
mMap.setMyLocationEnabled(true);
RequestQueue requestQueue= Volley.newRequestQueue(getApplicationContext());
StringRequest stringRequest=new StringRequest(Request.Method.GET, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("JSONResult" , response.toString());
JSONObject j = null;
try{
j =new JSONObject(response);
result = j.getJSONArray("FL");
for(int i=0;i<result.length();i++){
JSONObject jsonObject1=result.getJSONObject(i);
String lat_i = jsonObject1.getString("1");
String long_i = jsonObject1.getString("2");
mMap.addMarker(new MarkerOptions()
.position(new LatLng(Double.parseDouble(lat_i) , Double.parseDouble(long_i)))
.title(Double.valueOf(lat_i).toString() + "," + Double.valueOf(long_i).toString())
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED))
);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(23.6850,90.3563), 6.0f));
}
}catch (NullPointerException e){
e.printStackTrace();
}
catch (JSONException e){
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
Toast.makeText(MapsActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
int socketTimeout = 10000;
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(policy);
requestQueue.add(stringRequest);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
@Override
public boolean onMarkerClick(Marker marker) {
return false;
}
但是我在Android中没有标记,并且具有以下调试功能:
W / zygote64:由于无法识别的类加载器I / DynamiteModule,跳过重复的类检查:考虑本地模块 com.google.android.gms.maps_dynamite:0和远程模块 com.google.android.gms.maps_dynamite:220 I / DynamiteModule:已选中 远程版本的com.google.android.gms.maps_dynamite,版本> = 220 W / zygote64:由于无法识别而跳过重复的类检查 classloader I / Google Maps Android API:Google Play服务客户端 版本:12451000 I / Google Maps Android API:Google Play服务 软件包版本:12685023 I / zygote64:执行部分代码缓存 收集,代码= 23KB,数据= 29KB 收集代码缓存后,代码= 23KB,数据= 29KB 将代码缓存容量增加到128KB E / zygote64:Android版本> = 6.0上不存在String#value字段 D / NetworkSecurityConfig:未使用指定网络安全配置 平台默认I / System.out:(HTTPLog)-静态:isSBSettingEnabled false I / System.out:(HTTPLog)-静态:isSBSettingEnabled false I / zygote64:执行部分代码缓存收集,代码= 61KB,数据= 59KB D / TcpOptimizer:TcpOptimizer-ON I / zygote64:代码缓存后 收集,代码= 61KB,数据= 59KB 将代码缓存容量增加到256KB D / ViewRootImpl @ 82b5652 [MapsActivity]:setView = DecorView @ 42ced23 [MapsActivity] TM = true MM = false D / ViewRootImpl @ 4f69478 [启动器]:MSG_WINDOW_FOCUS_CHANGED 0 D / ViewRootImpl @ 82b5652 [MapsActivity]:dispatchAttachedToWindow V /表面:sf_framedrop调试:0x4f4c,游戏:假,记录:0 D / ViewRootImpl @ 82b5652 [MapsActivity]:中继返回: 旧= [0,0] [0,0]新= [0,0] [1080,2220]结果= 0x7曲面= {有效= true 490213584896}更改= true D / mali_winsys:EGLint new_window_surface(egl_winsys_display *,void *,EGLSurface, EGLConfig,egl_winsys_surface **,egl_color_buffer_format *, EGLBoolean)返回0x3000,[1080x2220]格式:1 D / OpenGLRenderer: eglCreateWindowSurface = 0x7230f51fa0 D / ViewRootImpl @ 82b5652 [MapsActivity]:MSG_RESIZED_REPORT: frame = Rect(0,0-1080,2220)ci = Rect(0,63-0,0)vi = Rect(0,63-0, 0)或= 1 MSG_WINDOW_FOCUS_CHANGED 1 V / InputMethodManager:开始输入: tba=android.view.inputmethod.EditorInfo@9c8881 nm: com.a9831.sapires.samuel9831 ic = null I / InputMethodManager: startInputInner-mService.startInputOrWindowGainedFocus V /曲面: sf_framedrop调试:0x4f4c,游戏:假,记录:0V /表面: sf_framedrop调试:0x4f4c,游戏:false,日志记录:0 D / mali_winsys: EGLint new_window_surface(egl_winsys_display *,void *,EGLSurface, EGLConfig,egl_winsys_surface **,egl_color_buffer_format *, EGLBoolean)返回0x3000,[1080x2157]格式:2 D / OpenGLRenderer: eglDestroySurface = 0x7242c28a00 D / ViewRootImpl @ 4f69478 [启动器]: 重新发出中继:旧= [0,0] [1080,2220]新= [0,0] [1080,2220] result = 0x5 surface = {valid = false 0}已更改= true I / System.out: (HTTPLog)-静态:isSBSettingEnabled false I / System.out: (HTTPLog)-静态:isSBSettingEnabled false D / ViewRootImpl @ 4f69478 [Launcher]:dispatchDetachedFromWindow D / InputEventReceiver:通道'f8f1abc com.a9831.sapires.samuel9831 / com.a9831.sapires.samuel9831.Launcher (客户端)'〜处置输入事件接收器。 频道'f8f1abc com.a9831.sapires.samuel9831 / com.a9831.sapires.samuel9831.Launcher (客户端)'〜NativeInputEventReceiver。 I / zygote64:执行完整代码缓存 集合,代码= 124KB,数据= 118KB I / zygote64:代码缓存后 集合,代码= 111KB,数据= 63KB W / DynamiteModule:本地模块 com.google.android.gms.google的描述符类不能证明 找到了。 I / DynamiteModule:考虑本地模块 com.google.android.gms.googlecertificates:0和远程模块 com.google.android.gms.google证书:4 com.google.android.gms.googlecertificates的选定远程版本,版本> = 4 W / zygote64: 由于无法识别类加载器而跳过重复的类检查 I / zygote64:执行部分代码缓存收集,代码= 122KB,数据= 79KB I / zygote64:收集代码缓存后,代码= 122KB,数据= 79KB 将代码缓存容量增加到512KB I / zygote64:编译器分配了4MB的空间来编译void com.google.maps.api.android.lib6.gmm6.vector.bs.b(javax.microedition.khronos.opengles.GL10) I / System.out:(HTTPLog)-静态:isSBSettingEnabled false I / System.out: (HTTPLog)-静态:isSBSettingEnabled false V / InputMethodManager: 开始输入:tba=android.view.inputmethod.EditorInfo@b8feb38 nm: com.a9831.sapires.samuel9831 ic = null I / InputMethodManager: startInputInner-mService.startInputOrWindowGainedFocus D / ViewRootImpl @ 82b5652 [MapsActivity]:performDraw()被跳过 AOD_SHOW_STATE ... DisplayState = 3 D / ViewRootImpl @ 82b5652 [MapsActivity]: MSG_WINDOW_FOCUS_CHANGED 0 D / OpenGLRenderer:eglDestroySurface = 0x7230f51fa0
唯一的红色错误是:
E / zygote64:Android版本> = 6.0上不存在String#value字段
但是该程序不会停止并且无法工作,但是没有标记。 提前谢谢