0

好的,所以我要做的是有一个 EditText 框,用户可以在其中输入街道名称。然后,我的应用程序将获取该街道的纬度/经度,并在地图上的该地理位置放置一个标记(使用 Google Maps API v2)。到目前为止,我已经设置了 EditText 框以及具有在指定地理点手动添加标记的功能的地图。

示例:如果用户在 EditText 框中输入“Grafton Street”,应用程序将获取纬度/经度 (53.342094,-6.259868) 并随后使用 GeoPoint 函数在地图上的该点放置一个标记,或者甚至突出显示整条路(如谷歌方向等所示)。

我的问题是我不确定如何实际获取输入位置的纬度和经度以传递给我的 addMarker 函数。任何想法或建议将不胜感激!

编辑:已解决,请参阅下面的答案。

4

4 回答 4

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"));
    }
于 2013-01-17T12:21:45.437 回答
0

首先,您需要使用 GoeCoder 获取名称并将其转换为 Lat\Long:

http://developer.android.com/reference/android/location/Geocoder.html

然后,您将使用 GeoPoint 获取 lat\long 作为参数,并将其转换为 aa GeoPoint(用于在地图上显示)。

https://developers.google.com/maps/documentation/android/v1/reference/com/google/android/maps/GeoPoint

于 2013-01-16T13:58:20.873 回答
0

您的简化解释是一个好主意,也是一个很好的应用项目。

但是即使你的简单解释很简单,因为它是一个应用项目,所以要给你想要得到的答案也并不容易。您必须通过 Google 搜索收集许多示例代码和文档。

首先,请参阅本 Android 官方手册

其次,请在上面的文档中下载示例代码。

于 2013-01-16T14:51:36.307 回答
0

它称为地理编码。您提交请求,他们会返回匹配的地点列表。解析该结果,获得该列表中第一名的几何图形。

于 2013-01-16T14:09:26.900 回答