5

我正在使用与 REST Web 服务交互的 Android 应用程序。我们在手机中有一个功能,可以在谷歌本地地图中选择一个位置,然后发送到服务器。

出于某种原因,我们需要在网站上获取该点的地址以打印出来。

如果我们使用 Geocoder 从手机中的 Latitude 和 Longtitude 获取地址并将其发送到 REST,我们需要消耗手机中的一些内存、数据和带宽。

如果我们在 REST 中执行此操作,因为应该为使用该应用程序的许多用户执行此操作,所以该过程可能会很耗时。(这是我们的 REST 开发人员所相信的)

你能帮我谈谈你的意见吗?哪个想法更好,为什么?

4

3 回答 3

2

您所做的称为“反向地理编码”(https://developers.google.com/maps/documentation/geocoding/?hl=fr#ReverseGeocoding

关于您的问题:我了解到您对某些用户的位置进行了反向地理编码,并且生成的地址将被许多其他用户使用。

知道: 1. 反向地理定位是昂贵的 2. 获得的地址将被许多用户使用 3. 每个用户将使用许多这些地址 然后你应该在服务器端进行并将所有地址放在一条消息中。如果您可以将地址数量限制为唯一有用的地址,那会更好(可能是您附近的地址,但取决于您的应用程序功能)

重要提示:在移动设备上,对性能至关重要的不是传输的数据量,而不是消息的数量:带宽很好,但延迟很糟糕。因此,在您的服务器 API 中,避免原子操作并尽可能多地聚合!

于 2013-06-20T10:59:23.743 回答
1

请使用此功能

String getAddress(Double lat,Double lon) { String address = "";

    GeoPoint point = new GeoPoint((int) (lat * 1E6),
            (int) (lon * 1E6));

    Geocoder geoCoder = new Geocoder(mContext, Locale.getDefault());
    try {
        List<Address> addresses = geoCoder.getFromLocation(
                point.getLatitudeE6() / 1E6, point.getLongitudeE6() / 1E6,
                1);

        if (addresses.size() > 0) {
            for (int index = 0; index < addresses.get(0)
                    .getMaxAddressLineIndex(); index++)
                address += addresses.get(0).getAddressLine(index) + " ";
        }

    } catch (IOException e) {
        e.printStackTrace();
    }

    return address;
}
于 2013-06-20T10:59:05.510 回答
0

您可以通过电话使用它。据我说,通过该服务使用会占用很多带宽。

我建议您直接在手机中使用,而不是通过服务使用它。

于 2013-06-27T17:52:28.790 回答