3

有没有办法根据特定点(Long/lat)在谷歌地图中找到最近的位置,我读了一些关于谷歌 Place API 的东西,但我没有意识到如何使用它.. 是否有可能找到下一个最近的也是???

4

3 回答 3

3

使用Google Places API Web Service,您可以执行Places Search Requestlocation用户的 lat,lng 在哪里:

https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&rankby=distance&types=food&sensor=false&key=AddYourOwnKeyHere

如果您希望按时间顺序获取最近的位置而不是指定半径中最突出的位置,请确保指定rankby=distance参数而不是参数。radius

我还在types=food上面的请求中指定了一个参数,以便在我的响应中只返回食物类型的地方。可以在此处找到其他支持的类型。

要使用Google Places API 网络服务,您需要按照此处的说明获取 API 密钥以使用该服务,该密钥需要在key=AddYourKeyHere参数下随您的请求一起发送。

如果您希望在 JavaScript 应用程序中使用此服务,请查看Google Maps API v3Places Library

于 2012-05-28T02:21:13.430 回答
2

您可以通过以下方式实现它

LocationManager locationManager = (LocationManager) context
                    .getSystemService(Context.LOCATION_SERVICE);
        LocationListener locationListener = new LocationListener() {
            @Override
        public void onStatusChanged(String provider, int status,
                Bundle extras) {
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onProviderDisabled(String provider) {
        }

        @Override
        public void onLocationChanged(Location location) {
            Double l1 = location.getLatitude();
            Double l2 = location.getLongitude();
            address = GetAddress(l1, l2);               
        }
    };
    locationManager.requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);  

private String GetAddress(Double lat, Double lon) {
    Geocoder geocoder = new Geocoder(context, Locale.ENGLISH);
    String ret = "";
    List<Address> addresses = null;
    try {
        addresses = geocoder.getFromLocation(lat, lon, 1);
        if (!addresses.equals(null)) {
            Address returnedAddress = addresses.get(0);
            StringBuilder strReturnedAddress = new StringBuilder("\n");
            for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
                strReturnedAddress
                        .append(returnedAddress.getAddressLine(i)).append(
                                "\n");
            }
            ret = "Around: " + strReturnedAddress.toString();
        } else {
            ret = "No Address returned!";
        }
    } catch (IOException e) {
        e.printStackTrace();
        ret = "Location: https://maps.google.co.in/maps?hl=en&q=" + lat
                + "," + lon;
    } catch (NullPointerException e) {
        e.printStackTrace();
        ret = lat + "," + lon;
    }
    return ret;
}

并且还在 AndroidManifest 中添加这些权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
于 2013-05-09T04:26:58.460 回答
-1

谷歌地方 API

网址::

https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=AddYourOwnKeyHere

需要更改纬度、经度、半径、类型、名称和键。

注意::需要注册开发者预览版。

于 2012-05-27T09:14:09.610 回答