从位置获取地点

时间:2014-01-21 20:36:45

标签: javascript dart google-places-api google-geocoding-api

如果我有一个位置的经度和纬度,我可以使用反向geocoding获取有关位置的基本信息(如地址),但我想要更多信息。我正在使用Places API作为搜索栏,并返回大量数据,但我无法从纬度和经度获得位置。

我发现places API支持place details,但为此我需要一个我无法从任何地方获取的参考。

注意:我在dart中写这个,但是dart api只是javascript的包装,这就是为什么我将它标记为两者。

2 个答案:

答案 0 :(得分:1)

PlaceResult对象包含reference属性,该属性应在PlaceDetailsRequest提供给PlacesService.getDetails时使用。

答案 1 :(得分:1)

我最终选择了PlaceService.textSearch路线。这并不像我预期的那么脏。最终的功能看起来像这样:

void placeFromLocation(LatLng location, void callback(PlaceResult)) {
    GeocoderRequest geocoderRequest = new GeocoderRequest()
        ..location = location;
    geocoder.geocode(geocoderRequest, (List<GeocoderResult> results, GeocoderStatus status) {
        if(status == GeocoderStatus.OK) {
            TextSearchRequest request = new TextSearchRequest()
                ..query = results[0].formattedAddress
                ..location = results[0].geometry.location
                ..radius = 40;
            placeService.textSearch(request, (List<PlaceResult> results, PlacesServiceStatus status) {
                if(status == PlacesServiceStatus.OK) {
                    callback(results[0]);
                }else{
                    print("Not place found");
                }
            });
        }else{
            print("Error geocoding address");
        }
    });
}