用javaapi进行地理编码

用javaapi进行地理编码,java,geocoding,nominatim,Java,Geocoding,Nominatim,我正在使用nomitim的Namingm java api获取给定地址的经度和纬度属性:。对于每个不同的输入经度和纬度,输出是相同的。对于纬度=51.3258094,对于经度=11.340006。我做错了什么? 代码如下: public class Geocoding(){ private volatile NominatimAPI nominatimAPI;//Use Volatile public NominatimAPI getNominatimAPI(){ NominatimAPI re

我正在使用nomitim的Namingm java api获取给定地址的经度和纬度属性:。对于每个不同的输入经度和纬度,输出是相同的。对于纬度=51.3258094,对于经度=11.340006。我做错了什么? 代码如下:

public class Geocoding(){
private volatile NominatimAPI nominatimAPI;//Use Volatile
public NominatimAPI getNominatimAPI(){
NominatimAPI result=nominatimAPI;
if(result==null){
    synchronized (this){//Synchronize for thread safety
        result=nominatimAPI;
        if (result==null){
            result=new NominatimAPI();
            nominatimAPI=result;
        }
    }
}
return result;
}

private static void mymethod2() {
    List<String> cities = Arrays.asList("Los Angeles","Berlin");
    String endpointUrl = "https://nominatim.openstreetmap.org/";
    MapPoint mapPoint;
    Geocoding test=new Geocoding();
    for (String city : cities) {
        NominatimAPI nominatim = test.getNominatimAPI();
        Address address = new Address();
        address.setCity(city);
        nominatim.initNominatimAPI(endpointUrl);
        mapPoint = nominatim.getMapPointFromAddress(address, 18);
       System.out.println(mapPoint.getLatitude()+","+mapPoint.getLongitude());
}
}
}
公共类地理编码(){
私有volatile namignMapi namignMapi;//使用volatile
公共指定mapi getnamignmapi(){
提名MAPI结果=提名MAPI;
如果(结果==null){
已同步(此){//为线程安全而同步
结果=MAPI;
如果(结果==null){
结果=新的MAPI();
MAPI=结果;
}
}
}
返回结果;
}
私有静态void mymethod2(){
List cities=Arrays.asList(“洛杉矶”、“柏林”);
字符串endpointUrl=”https://nominatim.openstreetmap.org/";
地图点地图点;
地理编码测试=新地理编码();
for(字符串城市:城市){
namitmapi namitm=test.getnamitmapi();
地址=新地址();
地址:setCity(城市);
initm.initmapi(endpointUrl);
mapPoint=namitm.getMapPointFromAddress(地址,18);
System.out.println(mapPoint.getLatitude()+”,“+mapPoint.getLatitude());
}
}
}

而不是使用
地址.setCity(city)
我使用了
address.setCountry(city)
。对于每一个与提名地址相关的输入,你都可以使用setCountry。它返回真实的经度和纬度值。我不明白为什么只有setCountry可以工作,但它是。

精度
18
似乎有点极端-你试过降低精度吗?您链接到的示例使用了
5
…在浏览了代码之后,这应该无关紧要-因为您只指定了“City”,
maxPrecision
在我看来是1。在没有实际测试任何东西的情况下,我建议在您的地址中添加一个州。还有一个与此问题非常相似的开放问题-谢谢您的考虑。我尝试了它们,但没有任何改变。