0
こんにちは、 私はJava Desktopで学術プロジェクトにシステムを構築しています。このプロジェクトでは、住所(「5th avenue、NY」など)を受け取り、この住所を地理座標(緯度と経度)に変換してデータベースに格納する必要があります。これらの座標はマップ上に表示されます。Java SwingでのGeocoderの問題
私はJxMaps APIを使用していますが、使用できるGeocoderコードの例は変更できません。私が何をしても、コードはうまく機能しません。ただし、この例では動作します。
は私のコードからの抜粋(つまり、パッケージモデルである)は、以下の:
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);
}
}
});
}
}
をそして、これはダオパッケージである:
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;
}
}
私はそれを動作させることはできません。私を助けてください!!