在 Android 中向地图添加标记
Posted
技术标签:
【中文标题】在 Android 中向地图添加标记【英文标题】:Adding markers to a map in Android 【发布时间】:2017-01-20 17:35:41 【问题描述】:我有一个从输入流形成的 KML 层:
private KmlLayer layer;
inputStream = new URL("urlHERE").openStream();
layer = new KmlLayer(mMap, inputStream, getApplicationContext());
我想遍历该层中的每个标记,并检查它是否在我当前位置的一定距离内,并且只有在它存在时才显示它。
这是我目前用来获取标记的纬度/经度的代码。
for (KmlPlacemark placemark: layer.getPlacemarks())
String s = placemark.getGeometry().getGeometryObject().toString();
Log.d("placemarks",s);
String start = "(";
String end = ")";
String latlngvalue = s.substring(s.indexOf(start)+1,s.lastIndexOf(end));
String[] strngs = latlngvalue.split(",");
double placemarkerLat = Double.parseDouble(strngs[0]);
double placemarkerLong = Double.parseDouble(strngs[2]);
markerLocation.setLatitude(placemarkerLat);
markerLocation.setLongitude(placemarkerLong);
我想要做的是在 ArrayList 中添加每个标记的信息,如果它们在用户的一定距离内,然后将标记添加到地图上。
【问题讨论】:
【参考方案1】:检查此行
currLocationMarker = mGoogleMap.addMarker(markerOptions); //你的答案在这里
@Override
public void onLocationChanged(Location location)
mGoogleMap.clear();
mHashMap.clear();
allMarkersLists.clear();
favouriteGpList.clear();
//place marker at current position
//mGoogleMap.clear();
if (currLocationMarker != null)
currLocationMarker.remove();
latitude = location.getLatitude();
longitude = location.getLongitude();
latLng = new LatLng(location.getLatitude(), location.getLongitude());
markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)).draggable(true);
currLocationMarker = mGoogleMap.addMarker(markerOptions); //YOUR ANSWER HERE
mHashMap.put(currLocationMarker, 0);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(11));
mGoogleMap.setMyLocationEnabled(true);
getMapPin();
//If you only need one location, unregister the listener
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
【讨论】:
以上是关于在 Android 中向地图添加标记的主要内容,如果未能解决你的问题,请参考以下文章