Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌地图android,所有标记都在圆圈内加载_Android_Google Maps_Geometry_Markers - Fatal编程技术网

谷歌地图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);