谷歌地图android,所有标记都在圆圈内加载
我正在使用一个圆,并尝试使用其纬度和经度值从距离内的数据库加载标记,问题是,它正在加载所有标记,而不仅仅是圆内的标记 有人能指出我哪里出了问题吗?代码:谷歌地图android,所有标记都在圆圈内加载,android,google-maps,geometry,markers,Android,Google Maps,Geometry,Markers,我正在使用一个圆,并尝试使用其纬度和经度值从距离内的数据库加载标记,问题是,它正在加载所有标记,而不仅仅是圆内的标记 有人能指出我哪里出了问题吗?代码: float[] distance = new float[10]; for(int i=0; i<jArray.length(); i++) { JSONObject jsonData = jArray.getJSONObject(i); databaseMarkerData.add(new BasicNameValue
float[] distance = new float[10];
for(int i=0; i<jArray.length(); i++)
{
JSONObject jsonData = jArray.getJSONObject(i);
databaseMarkerData.add(new BasicNameValuePair("name", jsonData.getString("name")));
databaseMarkerData.add(new BasicNameValuePair("address", jsonData.getString("address")));
databaseMarkerData.add(new BasicNameValuePair("description", jsonData.getString("description")));
databaseMarkerData.add(new BasicNameValuePair("rating", jsonData.getString("rating")));
databaseMarkerData.add(new BasicNameValuePair("lat", jsonData.getString("lat")));
databaseMarkerData.add(new BasicNameValuePair("lng", jsonData.getString("lng")));
databaseMarkerData.add(new BasicNameValuePair("estType", jsonData.getString("estType")));
databaseMarkerData.add(new BasicNameValuePair("reliability", jsonData.getString("reliability")));
String latText = jsonData.getString("lat");
Double lat = Double.parseDouble(latText);
String lngText = jsonData.getString("lng");
Double lng = Double.parseDouble(lngText);
getMarkerDataArray.add(new MarkerData(jsonData.getString("name"), jsonData.getString("address"), jsonData.getString("description"),
jsonData.getString("rating"), jsonData.getString("reliability"), lat, lng, jsonData.getString("estType")));
Location.distanceBetween( lat, lng, circle.getCenter().latitude, circle.getCenter().longitude, distance);
if( distance[i] < circle.getRadius())
{
plotMarkers(getMarkerDataArray);
}
}
float[]距离=新的float[10];
对于(int i=0;i 0)
{
for(MarkerData MarkerData:markers)
{
//使用自定义图标和其他选项创建用户标记
MarkerOptions markerOption=newmarkeroptions().position(new LatLng(markerData.getLat(),markerData.getLng());
Marker currentMarker=googleMap.addMarker(markerOption);
markerDataHashmap.put(currentMarker,markerData);
setInfoWindowAdapter(新的MarkerInfoWindowAdapter());
}
}
存在多个问题
一个是距离的长度是您应该使用的:
if( distance[0] < circle.getRadius()){
plotMarkers(getMarkerDataArray);
}
getMarkerDataArray
是一个列表,无论距离条件是否满足,它都会被填充,并在plotMarkers
中每次都使用它。我想你想要的是
for (...){
if( distance[0] < circle.getRadius()){
getMarkerDataArray.add(new MarkerData(...));
}
}
plotMarkers(getMarkerDataArray);
(…)的{
if(距离[0]
感谢您的建议,但不幸的是,它仍然加载圆圈边界之外的标记
if( distance[i] < circle.getRadius())
{
plotMarkers(getMarkerDataArray);
}
for (...){
if( distance[0] < circle.getRadius()){
getMarkerDataArray.add(new MarkerData(...));
}
}
plotMarkers(getMarkerDataArray);