【问题标题】:Getting the locations from a MySQL database and displaying them on a map从 MySQL 数据库中获取位置并在地图上显示它们
【发布时间】:2019-04-22 17:42:28
【问题描述】:

如何从 Mysql 数据库中获取位置并将其显示在地图上显示标记的 Android 应用程序上?

我有一个自定义的 Google 地图,它当前从名为位置的数组或 JavaScript 变量中获取位置。我希望不再手动输入数据,而是从数据库中动态插入数据。我怎样才能实现这一目标?我正在使用 Google 地图 Api。

提前致谢

【问题讨论】:

    标签: android phpmyadmin location latitude-longitude android-maps-v2


    【解决方案1】:
        inside your MapActivity instanciate LocationListener. 
        under onLocationChange(Location location) insert your method to insert data in mySQL.
        everytime you request for new location it will automatically save the location to your database
    
    
    
    
            public void Connected(){
            if (android.os.Build.VERSION.SDK_INT > 9) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
            }
            try {
                Class.forName("com.mysql.jdbc.Driver");
                connection = DriverManager.getConnection(CONN, USER, PASSWORD);
                System.out.println("CONNECTION ZERO::::"+connection);
            } catch (SQLException e) {
                e.printStackTrace();
    //            Toast.makeText(this, "asdasd", Toast.LENGTH_SHORT).show();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
    public void getLocation() {
            locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
            isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
            isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                return;
            }
    
            if (isGpsEnabled) {
                if (location == null) {
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 25000, 0, MainActivity.this);
                    if(locationManager != null){
                        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    }
    
                }
            }
            if(location == null){
                if(isNetworkEnabled){
                    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,25000 , 0, ll);
                    location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                }
            }
            if(location == null){
                location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            }
            if(location != null){
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,25000 , 0, ll);
            }
        }
    
    LocationListener ll = new LocationListener();
        @Override
        public void onLocationChanged(Location location) {
            System.out.println(location.getLatitude()+",:::::::::"+location.getLongitude());
            Constants.LONGITUDE = location.getLongitude();
            Constants.LATITUDE = location.getLatitude();
            Toast.makeText(this, ":::::::::::::::::::::::::onchangelocation::::"+Constants.LATITUDE+","+Constants.LONGITUDE+",\n"+location.getProvider(), Toast.LENGTH_LONG).show();
    
    
                                        try {
    //                                    Connected();
                                            String query = " insert into myusers_tbl (latitude, longitude)"
                                                    + " values (?, ?)";
                                            preparedStatement.setDouble(5, Constants.LATITUDE);
                                            preparedStatement.setDouble(6, Constants.LONGITUDE);
                                            System.out.println("prepared statement"+preparedStatement);
                                            System.out.println("::::"+preparedStatement .executeUpdate());
                                            connection.close();
                                        } catch (SQLException e) {
                                            e.printStackTrace();
                                            System.out.println("::::::::"+e);
                                        }
        }
    
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
    
        }
    
        @Override
        public void onProviderEnabled(String provider) {
    
        }
    
        @Override
        public void onProviderDisabled(String provider) {
    
        }
    
    private static final String USER = "username";
    private static final String PASSWORD = "password";
    private static final String CONN = "jdbc:mysql://localhost:3306/database";
    

    【讨论】:

    • 我是安卓开发的初学者。有的话可以分享一下代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2021-04-22
    • 1970-01-01
    • 2016-01-23
    相关资源
    最近更新 更多