我正在尝试编写一个android程序,该程序使用Google API查找离电话位置最近的医院。请注意,医院不一定在我的社区或城市。它可能很远,但它是最近的一个。
通过搜索,我找到了一个代码,该代码只在手机周围的特定半径内搜索,并找到了附近的所有医院。代码如下:
private String makeUrl(double latitude, double longitude,String place) {
StringBuilder urlString = new StringBuilder("https://maps.googleapis.com/maps/api/place/search/json?");
if (place.equals("")) {
urlString.append("&location=");
urlString.append(Double.toString(latitude));
urlString.append(",");
urlString.append(Double.toString(longitude));
urlString.append("&radius=1000");
// urlString.append("&types="+place);
urlString.append("&sensor=false&key=" + API_KEY);
} else {
urlString.append("&location=");
urlString.append(Double.toString(latitude));
urlString.append(",");
urlString.append(Double.toString(longitude));
urlString.append("&radius=1000");
urlString.append("&types="+place);
urlString.append("&sensor=false&key=" + API_KEY);
}
return urlString.toString();
}
这个代码对我来说还可以。我如何修改它来实现我的目标?非常感谢。
试试这个:
private String makeUrl(double latitude, double longitude,String place) {
StringBuilder urlString = new StringBuilder("https://maps.googleapis.com/maps/api/place/search/json?");
if (place.equals("")) {
urlString.append("&location=");
urlString.append(Double.toString(latitude));
urlString.append(",");
urlString.append(Double.toString(longitude));
urlString.append("&radius=50000"); // <<-- change here
// urlString.append("&types="+place);
urlString.append("&sensor=false&key=" + API_KEY);
} else {
urlString.append("&location=");
urlString.append(Double.toString(latitude));
urlString.append(",");
urlString.append(Double.toString(longitude));
urlString.append("&radius=50000"); // <<-- change here
urlString.append("&types="+place);
urlString.append("&sensor=false&key=" + API_KEY);
}
return urlString.toString();
}
将半径增加到100000,就会根据距离得到响应。然后选择距离最低的地方作为你需要的地方。
应用dijkstra的最短路径算法。你必须首先使用图形结构才能使用GPS系统上通往医院的路径。然后可以应用最短路径算法。