android - 地图标记未显示在确切位置
问题描述
我正在尝试从数据库中获取 lat long 并将其显示在 android google map 上。但标记未显示在经纬度所属的位置。我有多个 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);
}
解决方案
推荐阅读
- java - 将列表中的元素移动到最后一个索引
- java - 休眠序列化失败
- c++ - 计算二叉搜索树 C++ 中的节点数
- string - AWK 比较两个字符串变量
- reactjs - 创建并发布可重用的 React Native UI 组件库
- python - Python Pandas - 如果使用 groupby 函数对两列中的数据进行汇总,则将一列中的数据除以另一列
- flutter - 用于 OnLongPressed 的颤振 GestureDetector
- webpack - 如何追踪捆绑节点模块的原因
- ios - 如何在 ViewController 中显示弹出窗口
- oracle-wallet - 向 Oracle 钱包添加证书