Google マップで特定の地点 (Long/lat) に基づいて最寄りの場所を見つける方法はありますか?次に近いものも???
3 に答える
Google Places API Web サービスを使用すると、 Places Search リクエストを実行できますlocation
。ユーザーの緯度、経度は次のとおりです。
指定した半径内で最も目立つ場所ではなく、時系列で最も近い場所を取得する場合rankby=distance
は、パラメータではなくパラメータを指定してください。radius
types=food
また、上記のリクエストでパラメーターを指定して、レスポンスで食品タイプの場所のみを返すようにしました。サポートされているその他のタイプについては、こちらを参照してください。
Google Places API Web サービスを使用するには、こちらの手順に従って、サービスを使用するための API キーを取得する必要があります。このキーは、リクエストとともにkey=AddYourKeyHere
パラメータで送信する必要があります。
このサービスを JavaScript アプリケーションで使用する場合は、Google Maps API v3のPlaces Libraryを確認してください。
これがあなたがそれを達成できる方法です
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" />
URL::
緯度、経度、半径、タイプ、名前、キーを変更する必要があります。
注::開発者プレビューにサインアップする必要があります。