【问题标题】:response error google maps api volley响应错误谷歌地图API凌空
【发布时间】:2016-02-15 14:23:20
【问题描述】:

我创建了一个从 mysql 数据库中检索数据的应用程序。问题是地图没有显示任何标记。 我正在使用凌空库

public class MainActivity extends FragmentActivity {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setUpMapIfNeeded();
    String uri = "localhost/get_all_products.php";
    RequestQueue mRequestQueue = Volley.newRequestQueue(getApplicationContext());
    JsonArrayRequest request = new JsonArrayRequest(
            uri,
            new Response.Listener<JSONArray>(){
                LatLng location;
                @Override
                public void onResponse(JSONArray response) {
                    int count = response.length();
                    for(int i = 0; i < count; i++){
                        try {
                            JSONObject jo = response.getJSONObject(i);
                            Double lat = Double.parseDouble(jo.getString("lat"));
                            Double lng = Double.parseDouble(jo.getString("lng"));

                            location = new LatLng(lat,lng);
                            MarkerOptions options = new MarkerOptions();
                            options.position(location);
                            options.title(jo.getString("product"));
                            options.snippet(jo.getString("product"));
                            mMap.addMarker(options);

                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    CameraUpdate cu = CameraUpdateFactory.newLatLng(location);
                    mMap.moveCamera(cu);
                    Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_LONG).show();

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(getApplicationContext(), "onErrorResponse", Toast.LENGTH_LONG).show();
                }
            }
    );
    Object TAG_REQUEST_QUEUE = new Object();
    request.setTag(TAG_REQUEST_QUEUE);
    mRequestQueue.add(request);
    mRequestQueue.start();
}

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

private void setUpMapIfNeeded() {
    if (mMap == null) {
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();
        if (mMap != null) {
        }
    }
}

}

地图没有任何标记,应用程序不会崩溃。

php文件是正确的所以这里不需要放代码

谢谢你:)

--------编辑

我得到的截击错误是

org.json.JSONException: value <html><body><script of type java.lang.String cannot be converted to JSONArray

【问题讨论】:

  • 从数据库中检索数据和显示标记是两件不同的事情,首先检查响应和你得到的错误
  • 错误是 org.json.JSONException: value
  • 这意味着您没有得到有效的 JSON 数据,请尝试修复您的响应

标签: android mysql android-volley google-maps-api-2


【解决方案1】:

问题不在于 java 或 php 文件。
我猜出于安全目的,主机“byethost14.com”没有提供有效的 json 格式。
我将 url 更改为 10.0.2.2 并将我的文件上传到 xamppserver 并且它正在工作
--------建议------
如果要输出 json,请不要使用 byethost

【讨论】:

    猜你喜欢
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2016-11-06
    • 2013-02-15
    • 2018-02-20
    相关资源
    最近更新 更多