我是Android新手,我正在尝试使用谷歌地图API来显示附近的地方。
我的代码是:
public void onClick(View v) {
mMap.clear();
String search = "cvs"
String url = getUrl(latitude, longitude, search);
Object[] dataTransfer = new Object[2];
dataTransfer[0] = mMap;
dataTransfer[1] = url;
GetNearbyData getNearbyData = new GetNearbyData();
getNearbyData.execute(dataTransfer);
}
private String getUrl(double latitude, double longitude, String
nearbyPlace) {
StringBuilder googlePlacesUrl = new
StringBuilder("https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
googlePlacesUrl.append("location=" + latitude + "," + longitude);
googlePlacesUrl.append("&radius=" + PROXIMITY_RADIUS);
googlePlacesUrl.append("&type=" + nearbyPlace);
googlePlacesUrl.append("&sensor=true");
googlePlacesUrl.append("&key=" + "{MY_KEY}");
return (googlePlacesUrl.toString());
}
网址输出为: Secure your Kubernetes production cluster {MY_KEY}
当我更改搜索词时,问题就开始了,当我把(在URL类型下)cvs / parks / starbucks ...(可能还有其他地方)时,我一直得到相同的结果。例如:如果我的位置是纽约中央公园,我会继续获得结果 克莱斯勒大厦 宾州酒店 哈德森纽约等等。 那些宫殿与我的搜索词无关(cvs / parks / starbucks ......) 重要的是,对银行而言,我确实得到银行的结果。
有谁能解释我如何解决这个问题?为什么有些话我得到了正确的结果,而对于其他的我没有?
由于
答案 0 :(得分:1)
请注意,cvs
,parks
或starbucks
都不属于您可以在附近搜索中使用的受支持类型列表。您可以在官方Places API文档中查阅支持的类型列表:
https://developers.google.com/places/supported_types
我认为在构造网址而不是keyword
参数时必须使用type
参数。
关键字 - 与Google为此地点编入索引的所有内容匹配的字词,包括但不限于姓名,类型和地址,以及客户评论和其他第三方内容。
来源:https://developers.google.com/places/web-service/search#PlaceSearchRequests
例如,如果我搜索'cvs'
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7692494%2C-73.9842065&radius=10000&keyword=cvs&key=MY_API_KEY
我可以看到与此搜索相关的地点,如我的屏幕截图所示
搜索“公园”
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7692494%2C-73.9842065&radius=10000&keyword=parks&key=MY_API_KEY
给我以下结果
最后搜索'starbucks'
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.7692494%2C-73.9842065&radius=10000&keyword=starbucks&key=MY_API_KEY
返回星巴克的地方
我希望这有帮助!