好的,所以我要做的是有一个EditText框,用户可以在其中输入街道名称。然后,我的应用程序将获取该街道的纬度/经度并在地图上的该地理位置放置标记(使用Google Maps API v2)。到目前为止,我已经设置了EditText框以及一个具有在指定地理位置手动添加标记的功能的地图。
示例:如果用户在EditText框中输入“Grafton Street”,应用程序将获得lat / long(53.342094,-6.259868),然后使用GeoPoint函数在地图上的该点放置一个标记,或者甚至突出整条道路(如谷歌方向等)。
我的问题是我不确定如何实际获取输入位置的纬度和经度以传递到我的addMarker函数中。任何想法或建议将不胜感激!
编辑:解决了,请参阅下面的答案。
答案 0 :(得分:3)
我已经使用了下面提供的答案并设法使其正常运行。我创建了一个新的LatLong而不是GeoPoint,因为addMarkerHere函数使用了该类型。以下是我为将来可能需要它的人使用的代码:
Geocoder g = new Geocoder(this);
List<Address> addressList = null;
String searchRoad = "Insert Road Name Here!";
try {
addressList = g.getFromLocationName(searchRoad, 1);
} catch (IOException e) {
Toast.makeText(this, "Location not found", Toast.LENGTH_SHORT)
.show();
e.printStackTrace();
} finally {
Address address = addressList.get(0);
if (address.hasLatitude() && address.hasLongitude()) {
double selectedLat = address.getLatitude();
double selectedLng = address.getLongitude();
LatLng Road = new LatLng(selectedLat, selectedLng);
Marker Custom = map.addMarker(new MarkerOptions()
.position(searchedRoad).title("Here is the road location")
.snippet("Hon the lads"));
}
答案 1 :(得分:0)
首先,您需要使用GoeCoder获取名称并将其转换为Lat \ Long:
http://developer.android.com/reference/android/location/Geocoder.html
然后,您将使用GeoPoint获取lat \ long作为参数,并将其转换为GeoPoint(用于在地图上显示)。
答案 2 :(得分:0)
它叫geocoding。 您提交请求后,会返回匹配的地点列表。解析结果,得到该列表中第一位的几何。
答案 3 :(得分:0)
您的简化说明是一个好主意和一个很好的应用项目。
但即使您的简短解释非常简单,也不容易为您提供您想要获得的答案,因为它是一个应用程序项目。您必须通过Google搜索收集许多示例代码和文档。
首先,请参阅this Android official manual。
其次,请在上面的文档中下载示例代码。