【发布时间】:2018-10-15 09:06:06
【问题描述】:
我正在使用 Nominatim java api for nomitim 来获取给定地址的经度和纬度属性:https://github.com/AtlisInc/Nominatim-API。对于每个不同的输入经度和纬度输出都是相同的。纬度 = 51.3258094 和经度 = 11.3400106。我究竟做错了什么? 代码如下:
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());
}
}
}
【问题讨论】:
-
18的精度似乎有点极端 - 您是否尝试降低精度?您链接到的示例使用5... -
在浏览了代码之后,这应该没关系 - 因为你只指定了“城市”,
maxPrecision无论如何都是 1,据我所知。 -
在没有实际测试过任何东西的情况下,我建议在您的地址中添加一个状态。
-
还有一个与这个问题非常相似的未解决问题 - github.com/AtlisInc/Nominatim-API/issues/5
-
感谢您的考虑。我试过了,没有任何改变。