Problemen met Geocoder in Java Swing

stemmen
0

Goedemiddag, Ik ben het bouwen van een systeem om een ​​wetenschappelijk project in Java Desktop. In dit project, moet ik een adres (zoals 5th avenue, NY) te ontvangen en om te zetten dit adres aan geografische coördinaten (lengte- en breedtegraad) op te slaan in de database. Deze coördinaten worden weergegeven op een kaart.

Ik gebruik de JxMaps API, maar ik kan niet aanpassen het voorbeeld Geocoder code ter beschikking gesteld door hen. Het maakt niet uit wat ik doe, de code werkt gewoon niet. Echter, in het voorbeeld, het werkt.

Volgt een fragment uit mijn code (dat wil zeggen bij pakket model):

package model;
import com.teamdev.jxmaps.GeocoderCallback;
import com.teamdev.jxmaps.GeocoderRequest;
import com.teamdev.jxmaps.GeocoderResult;
import com.teamdev.jxmaps.GeocoderStatus;
import com.teamdev.jxmaps.InfoWindow;
import com.teamdev.jxmaps.LatLng;
import com.teamdev.jxmaps.Map;
import com.teamdev.jxmaps.Marker;
import com.teamdev.jxmaps.swing.MapView;

import dao.tableMapa;

public class Geocoder extends MapView {

private boolean performGeocode(String text) {
    public boolean s;
    // Getting the associated map object
    final Map map = getMap();
    // Creating a geocode request
    GeocoderRequest request = new GeocoderRequest();
    // Setting address to the geocode request
    request.setAddress(text);

    // Geocoding position by the entered address
    getServices().getGeocoder().geocode(request, new GeocoderCallback(map) {
        @Override
        public void onComplete(GeocoderResult[] results, GeocoderStatus status) {
            // Checking operation status
            boolean r=false;
            if ((status == GeocoderStatus.OK) && (results.length > 0)) {
                // Getting the first result
                GeocoderResult result = results[0];
                // Getting a location of the result
                LatLng location = result.getGeometry().getLocation();

                tableMapa p=new tableMapa();
                r = p.Geocodification(location, text);
            }
        }
    });
  }
}

En dit is op Dao Pakket:

package dao;

import java.sql.Connection;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import com.teamdev.jxmaps.LatLng;
import model.ModeloMySql;
import model.pontoColeta;
import controller.fabricaConexao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class tableMapa {
    private ModeloMySql modelo = null;

    public tableMapa() {

        modelo = new ModeloMySql();
        modelo.setDatabase(projeto);
        modelo.setServer(localhost);
        modelo.setUser(root);
        modelo.setPassword(1234);
        modelo.setPort(3306);
    }

    public boolean Geocodification(LatLng location, String address){
        Boolean status = true;

        Connection con;
        con = fabricaConexao.getConnection(modelo);

        if (con == null) {
            JOptionPane.showMessageDialog(null, Failed to connect);
        }

        //String sql = UPDATE TABLE set(latitude=+location.getLat()+,longitude=+location.getLng()+ from pontocoleta where address=+address+;;
        String sql = UPDATE pontoColeta set latitude = ? ,longitude = ? from pontocoleta where address = ?;

        try {
            PreparedStatement statement = con.prepareStatement(sql);

            statement.setDouble(1, location.getLat());
            statement.setDouble(2, location.getLng());
            statement.setString(3, address);
            statement.executeUpdate();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            fabricaConexao.closeConnection(con);
            return false;
        }

        return true;
    }

    public ArrayList<pontoColeta> pontosSelect() {
        Boolean status = true;

        Connection con;
        con = fabricaConexao.getConnection(modelo);

        // testa se conseguiu conectar
        if (con == null) {
            JOptionPane.showMessageDialog(null, Failed to connect);
        }

        ArrayList<pontoColeta> pontos = new ArrayList<>();

        String sql = SELECT * from pontocoleta;
        pontoColeta p;

        try {
            PreparedStatement statement = con.prepareStatement(sql);
            ResultSet result = statement.executeQuery();

            while(result.next()){
                    p = new pontoColeta();
                    LatLng c = new LatLng(result.getDouble(latitude), result.getDouble(longitude));
                    p.setCoordinates(c);
                    p.setIdPonto(result.getInt(idPonto));
                    p.setDescription(result.getString(description));
                    p.setAddress(result.getString(address));
                    p.setPhone(result.getString(phone));  
                    pontos.add(p);

                } 
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            status = false;
        } finally {
            // Fecha a conexao
            fabricaConexao.closeConnection(con);
        }
        return pontos;
    }
}

Ik kan het niet laten werken. Help me alstublieft!!

De vraag is gesteld op 27/11/2017 om 18:47
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Mits code beschikt niet over een deel waar u belt performGeocode. Controleer dat het vernoemd naar volledige initialisatie van de MapView. Ik adviseer om het te doen op de onMapReadygebeurtenis. Neem een kijkje een voorbeeld hieronder:

MapView mapView = new MapView(); 

mapView.setOnMapReadyHandler(new MapReadyHandler() {
   @Override
   public void onMapReady(MapStatus status) {
       ...
       performGeocode(...);
   });
antwoordde op 28/11/2017 om 07:41
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more