在谷歌地图中显示多点(纬度,经度)的解决方案

时间:2015-11-09 12:04:48

标签: android google-maps

我是谷歌Android开发和位置基础应用程序的新手。 通过谷歌的教程,我可以显示一个位置。 之后我开发了更多,并从我的数据库中读取双纬度和双倍经度。(通过选择你会看到的位置!) 现在,我想显示我的数据库中存在的所有点(纬度和经度)。 我可以从数据库中读取它们,但是如何在我的应用程序中显示多点(纬度和经度)。 这是我的MainActivity代码,名为LocationService:

    public class LocationService extends FragmentActivity implements OnMapReadyCallback {

    double latitude;
    double longitude;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location_service);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {

        ConnectionHelper connectionHelper = new ConnectionHelper();
        Statement statement;

        try {
            statement = connectionHelper.getMyConnection().createStatement();
            ResultSet resultSet = statement.executeQuery("select Latitude, Longitude from myDB where Name='name'");
            if(resultSet.next()) {
                do {
                    latitude = Double.valueOf(resultSet.getString("Latitude"));
                    longitude = Double.valueOf(resultSet.getString("Longitude"));
                    LatLng myLocation = new LatLng(latitude, longitude);
                    map.addMarker(new MarkerOptions().position(myLocation).title("Marker in Place!"));
                    map.moveCamera(CameraUpdateFactory.newLatLng(myLocation));

                } while (resultSet.next());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

//

    }
}

在onMapReady方法中,我显示了在我的语句中选择的单个点。 现在我想得到没有where子句的所有点数。(所有纬度和经度)并显示所有。 我正在寻找最好的解决方案。 我将不胜感激任何帮助。 最诚挚的问候!

2 个答案:

答案 0 :(得分:2)

您只需要创建ArrayList<LatLag>并逐一添加

   List<LatLag> _list=new ArrayList<LatLng>();

   if(resultSet.next()) {
            do {
                latitude = Double.valueOf(resultSet.getString("Latitude"));
                longitude = Double.valueOf(resultSet.getString("Longitude"));
                LatLng myLocation = new LatLng(latitude, longitude);

               _list.add(myLocation );
            } while (resultSet.next());
        }

最后你获得了_list

中的所有积分

答案 1 :(得分:0)

创建MapPoint类

public class MapPoint{
     String name;
     double long;
     double lat;
     public MapPoint(String name, double long, double lat){
           this.name = name;
           this.long = long;
           this.lat = lat;
     }

然后将您的积分从数据库读取到List<MapPoint> mList并在onMapReady中执行此操作

MapPoint[] mPoint;
mPoint = mList.toArray(new MapPoint[]{});
for (int i = 0; i < mPoint.length(); i++) {

        double latitude = mPoint[i].lat();
        double longitude = mPoint[i].long();

        marker = new MarkerOptions().position(
                new LatLng(latitude, longitude)).title(mPoint[i].name());
        marker.icon(BitmapDescriptorFactory
                .defaultMarker(BitmapDescriptorFactory.HUE_RED));
        googleMap.addMarker(marker);
    }

希望它有所帮助。