Probleme mit Geocoder in Java Swing

stimmen
0

Guten Tag, ich bin den Aufbau eines Systems zu einem akademischen Projekt in Java Desktop. In diesem Projekt, ich brauche eine Adresse (wie „5th Avenue, NY“) und wandeln diese Adresse zu geographischen Koordinaten (Breitengrad und Längengrad) erhalten sie in der Datenbank zu speichern. Diese Koordinaten werden auf einer Karte angezeigt werden.

Ich bin mit dem JxMaps API, aber ich kann das Beispiel Geocoder Code, indem sie sich nicht anpassen zur Verfügung gestellt. Egal was ich tue, wird der Code einfach nicht. Doch in diesem Beispiel es funktioniert.

Folgt ein Ausschnitt aus meinem Code (das ist bei Paket-Modell):

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);
            }
        }
    });
  }
}

Und das ist auf Dao Paket:

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;
    }
}

Ich kann es nicht machen. Bitte hilf mir!!

Veröffentlicht am 27/11/2017 um 18:47
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Vorausgesetzt Code nicht über einen Teil , wo Sie anrufen performGeocode. Bitte überprüfen Sie, dass es nach der vollständigen Initialisierung der angerufene MapView. Ich empfehle es auf dem nennen onMapReadyEreignisse. Schauen Sie sich hier ein Beispiel unten angegeben:

MapView mapView = new MapView(); 

mapView.setOnMapReadyHandler(new MapReadyHandler() {
   @Override
   public void onMapReady(MapStatus status) {
       ...
       performGeocode(...);
   });
Beantwortet am 28/11/2017 um 07:41
quelle vom benutzer

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