用graphhopper实现通过地名得到经纬度相关代码
时间: 2024-02-26 21:53:55 浏览: 188
Android 通过地名获得经纬度并标识在地图上(代码已调试通过).doc
首先需要安装GraphHopper和依赖项,可以通过以下命令实现:
```
git clone https://github.com/graphhopper/graphhopper.git
cd graphhopper
./graphhopper.sh build
```
安装完成后,可以使用以下代码实现通过地名得到经纬度:
```java
import com.graphhopper.GHResponse;
import com.graphhopper.GraphHopper;
import com.graphhopper.PathWrapper;
import com.graphhopper.routing.util.FlagEncoder;
import com.graphhopper.routing.util.HintsMap;
import com.graphhopper.routing.util.EncodingManager;
import com.graphhopper.storage.index.LocationIndex;
import com.graphhopper.storage.index.QueryResult;
import com.graphhopper.util.PointList;
import com.graphhopper.util.shapes.GHPoint;
public class Main {
public static void main(String[] args) {
// 加载地图数据
GraphHopper hopper = new GraphHopper().forServer();
hopper.setDataReaderFile("map.osm.pbf");
hopper.setGraphHopperLocation("graph-cache");
hopper.importOrLoad();
// 初始化LocationIndex
LocationIndex locationIndex = hopper.getLocationIndex();
// 查询地名
QueryResult queryResult = locationIndex.findClosest(-34.603722, -58.381592, EdgeFilter.ALL_EDGES);
GHPoint point = queryResult.getSnappedPoint();
// 获取经纬度
double latitude = point.getLat();
double longitude = point.getLon();
System.out.println(latitude + "," + longitude);
}
}
```
其中,`map.osm.pbf`是地图数据文件,`graph-cache`是GraphHopper缓存目录,`-34.603722, -58.381592`是地名的经纬度坐标。这段代码会输出该地名的经纬度。
阅读全文