Android 地图标记未显示在确切位置

Android 地图标记未显示在确切位置,android,maps,android-volley,Android,Maps,Android Volley,我正试图从数据库中获取lat long,并将其显示在android谷歌地图上。但标记不显示在lat long所属的位置。我有多个latlong存储在数据库中。有时,第一次尝试显示是正确的,但当我获取其他位置时,它没有正确显示,标记被添加到边缘上。我是初学者。我试图找出解决办法,但没有找到。我们将非常感谢您的帮助。 下面是我的代码 private GoogleMap mMap; Bundle extras; public String loc=""; String ServerURL = "htt

我正试图从数据库中获取lat long,并将其显示在android谷歌地图上。但标记不显示在lat long所属的位置。我有多个latlong存储在数据库中。有时,第一次尝试显示是正确的,但当我获取其他位置时,它没有正确显示,标记被添加到边缘上。我是初学者。我试图找出解决办法,但没有找到。我们将非常感谢您的帮助。 下面是我的代码

private GoogleMap mMap;
Bundle extras;
public String loc="";
String ServerURL = "http://xyz.xy" ;
MarkerOptions place2;
double p1lat, p1long;
FusedLocationProviderClient fusedLocationProviderClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    fusedLocationProviderClient= LocationServices.getFusedLocationProviderClient( this );
    extras = getIntent().getExtras();
    loc= extras.getString("loc_id").toString();
    Toast.makeText( MapsActivity.this,"Intent data is:"+loc,Toast.LENGTH_LONG ).show();
    getLocLatLng(ServerURL);
}
@Override
public void onMapReady(GoogleMap googleMap) {
   place2 = new MarkerOptions().position(new LatLng(p1lat, p1long)).title("Location 2");
    mMap =googleMap;
    mMap.addMarker(new MarkerOptions()
            .position(place2.getPosition())
            .title("Your Current Location")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE)));
    mMap.animateCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(p1lat, p1long), 12.0f));

}


public void getLocLatLng(String URL){
    RequestQueue requestQueue= Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest( Request.Method.POST, URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    if (!response.contains("No Results Found")) {
                        try {
                            JSONArray jsonArray = new JSONArray(response);
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                                p1lat = Double.parseDouble(jsonObject1.getString( "lat" ));
                                p1long = Double.parseDouble(jsonObject1.getString( "long" ));
                            }
                            Toast.makeText( MapsActivity.this,"Latitude is:"+p1lat+"Longitude is: "+p1long,Toast.LENGTH_LONG).show();

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    else {
                        Toast.makeText(MapsActivity.this, "No Description found", Toast.LENGTH_LONG).show();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText( MapsActivity.this, "" + error, Toast.LENGTH_SHORT).show();
        }
    }

    ) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("loc_id", loc);
            return params;
        }
    };
    int socketTimeout = 30000;
    RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
    stringRequest.setRetryPolicy(policy);
    requestQueue.add(stringRequest);

}
私有谷歌地图mMap;
捆绑附加;
公共字符串loc=”“;
字符串ServerURL=”http://xyz.xy" ;
标记选项位置2;
双p1lat,p1long;
FusedLocationProviderClient FusedLocationProviderClient;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
fusedLocationProviderClient=LocationServices.getFusedLocationProviderClient(此);
extras=getIntent().getExtras();
loc=extras.getString(“loc_id”).toString();
makeText(MapsActivity.this,“意图数据是:”+loc,Toast.LENGTH_LONG.show();
getLocLatLng(ServerURL);
}
@凌驾
4月1日公开作废(谷歌地图谷歌地图){
place2=新标记选项().位置(新板条(p1lat,p1long)).标题(“位置2”);
mMap=谷歌地图;
mMap.addMarker(新标记选项()
.position(place2.getPosition())
.title(“您当前的位置”)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(新LatLng(p1lat,p1long),12.0f));
}
public void getLocLatLng(字符串URL){
RequestQueue RequestQueue=Volley.newRequestQueue(this);
StringRequest StringRequest=新的StringRequest(Request.Method.POST,URL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
如果(!response.contains(“未找到结果”)){
试一试{
JSONArray JSONArray=新JSONArray(响应);
for(int i=0;i
你说的“标记不在准确位置”是什么意思?地图标记不在我提供的lat long位置。从上面显示的代码中可以看出。我从url访问lat long,然后将其分配给变量,这些变量有助于在地图上显示标记。你说“标记不在确切位置”是什么意思?地图标记不在我提供lat long的位置。从上面显示的代码中可以看出。我从url访问lat long,然后将其分配给变量,这些变量将有助于在地图上显示标记。