Android 显示距离我当前位置最近的标记的标题Google Maps v2

Android 显示距离我当前位置最近的标记的标题Google Maps v2,android,google-maps,Android,Google Maps,我从数据库中获取数据,其中包含标题、代码段和位置,并尝试测试以检查我当前位置之间的距离。我不知道如何显示离我位置最近的标记的标题 List<MyMarkerObj> m = data.getMyMarkers(); for (int i = 0; i < m.size(); i++) { String[] slatlng = m.get(i).getPosition().split(" ");

我从数据库中获取数据,其中包含标题、代码段和位置,并尝试测试以检查我当前位置之间的距离。我不知道如何显示离我位置最近的标记的标题

    List<MyMarkerObj> m = data.getMyMarkers();
                for (int i = 0; i < m.size(); i++) {
                    String[] slatlng =  m.get(i).getPosition().split(" ");
                    LatLng lat = new LatLng(Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]));
                    map.addMarker(new MarkerOptions()
                            .title(m.get(i).getTitle())
                            .snippet(m.get(i).getSnippet())
                            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                            .position(lat)
                            );

                    float[] distance = new float[1];
                    Location.distanceBetween(currentlat, currentlong,Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]), distance);
                    Toast.makeText(getActivity(), "Marker Distance: "+ m.get(i).getTitle() +" "+distance[0], Toast.LENGTH_LONG).show();

                }
List m=data.getMyMarkers();
对于(int i=0;i
我在这里做了一些更改。试试看

List<MyMarkerObj> m = data.getMyMarkers();
float mindist;
int pos=0;
            for (int i = 0; i < m.size(); i++) {
                String[] slatlng =  m.get(i).getPosition().split(" ");
                LatLng lat = new LatLng(Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]));
                map.addMarker(new MarkerOptions()
                        .title(m.get(i).getTitle())
                        .snippet(m.get(i).getSnippet())
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                        .position(lat)
                        );

                float[] distance = new float[1];
                Location.distanceBetween(currentlat, currentlong,Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]), distance);
                if(i==0) mindist=distance[0];
                else if(mindist>distance[0]) {
                   mindist=distance[0];
                   pos=i;
                 }
            }
  Toast.makeText(getActivity(), "Closest Marker Distance: "+ m.get(pos).getTitle() +" "+mindist, Toast.LENGTH_LONG).show();
List m=data.getMyMarkers();
浮动正念;
int pos=0;
对于(int i=0;i距离[0]){
Minist=距离[0];
pos=i;
}
}
Toast.makeText(getActivity(),“最近的标记距离:”+m.get(pos.getTitle()+“+Mindsist,Toast.LENGTH_LONG).show();

我在这里做了一些更改。试试看

List<MyMarkerObj> m = data.getMyMarkers();
float mindist;
int pos=0;
            for (int i = 0; i < m.size(); i++) {
                String[] slatlng =  m.get(i).getPosition().split(" ");
                LatLng lat = new LatLng(Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]));
                map.addMarker(new MarkerOptions()
                        .title(m.get(i).getTitle())
                        .snippet(m.get(i).getSnippet())
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                        .position(lat)
                        );

                float[] distance = new float[1];
                Location.distanceBetween(currentlat, currentlong,Double.valueOf(slatlng[0]), Double.valueOf(slatlng[1]), distance);
                if(i==0) mindist=distance[0];
                else if(mindist>distance[0]) {
                   mindist=distance[0];
                   pos=i;
                 }
            }
  Toast.makeText(getActivity(), "Closest Marker Distance: "+ m.get(pos).getTitle() +" "+mindist, Toast.LENGTH_LONG).show();
List m=data.getMyMarkers();
浮动正念;
int pos=0;
对于(int i=0;i距离[0]){
Minist=距离[0];
pos=i;
}
}
Toast.makeText(getActivity(),“最近的标记距离:”+m.get(pos.getTitle()+“+Mindsist,Toast.LENGTH_LONG).show();

您可以使用这个简单的函数来计算纬度和经度格式中两点之间的距离。它就像一个符咒,然后您可以检查距离您所在位置最近的距离。只需在其中传递两个位置的纬度和经度

public double distanceFrom(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;
    int meterConversion = 1609;
    return new Double(dist * meterConversion).floatValue();    // this will return distance
}

您可以使用这个简单的函数来计算纬度和经度格式中两点之间的距离。它就像一个符咒,然后您可以检查距离您所在位置最近的距离。只需在其中传递两个位置的纬度和经度

public double distanceFrom(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75;
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng/2) * Math.sin(dLng/2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;
    int meterConversion = 1609;
    return new Double(dist * meterConversion).floatValue();    // this will return distance
}

这个代码不起作用吗?这里有距离,对吗?你能分享一个数据库设置方式的例子吗?这段代码行得通吗?你这里有距离,对吗?你能分享一个数据库设置的例子吗?嗨,尼扎姆!非常感谢我一直在找的那个!干杯很乐意帮忙。干杯……:)我怎么能把这个和jSon一起使用呢?嗨,尼扎姆!非常感谢我一直在找的那个!干杯很乐意帮忙。干杯……:)我如何将此与jSon一起使用?