Android 地图标记未显示在确切位置
我正试图从数据库中获取lat long,并将其显示在android谷歌地图上。但标记不显示在lat long所属的位置。我有多个latlong存储在数据库中。有时,第一次尝试显示是正确的,但当我获取其他位置时,它没有正确显示,标记被添加到边缘上。我是初学者。我试图找出解决办法,但没有找到。我们将非常感谢您的帮助。 下面是我的代码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
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,然后将其分配给变量,这些变量将有助于在地图上显示标记。