在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):windy1/google-places-api-java开源软件地址(OpenSource Url):https://github.com/windy1/google-places-api-java开源编程语言(OpenSource Language):Java 100.0%开源软件介绍(OpenSource Introduction):google-places-api-javaUNMAINTAINED: DO NOT USE
Contents
QuickstartWith Maven (make sure you are using the latest version): <dependencies>
<dependency>
<groupId>se.walkercrou</groupId>
<artifactId>google-places-api-java</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies> With Gradle (make sure you are using the latest version): repositories {
mavenCentral()
}
dependencies {
compile 'se.walkercrou:google-places-api-java:2.1.2'
compile 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
} Or just download the JAR with all dependencies included from the releases. Do not use the JAR if you are using Android, it will cause an error. Creating the clientGooglePlaces client = new GooglePlaces("yourApiKey"); You may optionally provide your own RequestHandler to delegate HTTP traffic GooglePlaces client = new GooglePlaces("yourApiKey", new MyRequestHandler()); Place SearchesNearby Search RequestsYou can search for places near specific latitude-longitude coordinates with a radius (in meters): List<Place> places = client.getNearbyPlaces(lat, lng, radius, GooglePlaces.MAXIMUM_RESULTS); You can retrieve at most 60 results. Every 20 results a new HTTP GET request will have to be made and also has a delay of 3 seconds because of API restrictions. You can omit the 'limit' parameter and it will default to 20 which will only ever require one HTTP GET request. Text Search RequestsYou can also search for locations by search query. This is the same backend system that Google Maps uses. List<Place> places = client.getPlacesByQuery("Empire State Building", GooglePlaces.MAXIMUM_RESULTS); Radar Search RequestsYou can also use the "radar" method of finding locations. List<Place> places = client.getPlacesByRadar(lat, lng, radius, GooglePlaces.MAXIMUM_RESULTS); Additional Url ParametersIf you need to add additional URL parameters to the request URL you can append as many List<Place> places = client.getPlacesByQuery("Empire State Building", GooglePlaces.MAXIMUM_RESULTS, Param.name("language").value("en"), Param.name("opennow").value(true)); Place DetailsAny of the above getters will only get you limited information about the returned Place. You can get a much more in-depth Place object with Here's one way I can get detailed information about the Empire State Building. List<Place> places = client.getPlacesByQuery("Empire State Building", GooglePlaces.MAXIMUM_RESULTS);
Place empireStateBuilding = null;
for (Place place : places) {
if (place.getName().equals("Empire State Building")) {
empireStateBuilding = place;
break;
}
}
if (empireStateBuilding != null) {
Place detailedEmpireStateBuilding = empireStateBuilding.getDetails(); // sends a GET request for more details
// Just an example of the amount of information at your disposal:
System.out.println("ID: " + detailedEmpireStateBuilding.getId());
System.out.println("Name: " + detailedEmpireStateBuilding.getName());
System.out.println("Phone: " + detailedEmpireStateBuilding.getPhoneNumber());
System.out.println("International Phone: " + empireStateBuilding.getInternationalPhoneNumber());
System.out.println("Website: " + detailedEmpireStateBuilding.getWebsite());
System.out.println("Always Opened: " + detailedEmpireStateBuilding.isAlwaysOpened());
System.out.println("Status: " + detailedEmpireStateBuilding.getStatus());
System.out.println("Google Place URL: " + detailedEmpireStateBuilding.getGoogleUrl());
System.out.println("Price: " + detailedEmpireStateBuilding.getPrice());
System.out.println("Address: " + detailedEmpireStateBuilding.getAddress());
System.out.println("Vicinity: " + detailedEmpireStateBuilding.getVicinity());
System.out.println("Reviews: " + detailedEmpireStateBuilding.getReviews().size());
System.out.println("Hours:\n " + detailedEmpireStateBuilding.getHours());
} This will print something like:
IconsOnce you have a detailed BufferedImage image = place.downloadIcon().getIconImage(); If you are working on Android, javax.imageio is not implemented. You can create a Bitmap from the icon with: InputStream stream = place.downloadIcon().getIconInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(stream); Place ActionsAdd PlacePlaces can be added to Google Places API through this library. Added Places are only visible to your application until
they are approved by Google's moderation process. This can be checked with You must begin by building the Place input via the PlaceBuilder builder = new PlaceBuilder(locationName, latitude, longitude, "type1", "type2"...) The constructor arguments are the only required arguments to add a place to Google Places but filling out the building more completely will help your Place get approved by the moderation process faster. builder.accuracy(50)
.phoneNumber("(000) 000-0000")
.address("4 John St")
.website("http://walkercrou.se")
.locale(Locale.ENGLISH); You must then pass the builder as an argument of Place place = client.addPlace(builder, true); Delete PlaceYou can delete places with: client.deletePlace(place); Place PhotosYou can retrieve photos of places from Google as well. For example, here's how I can choose a random photo from a place and save it to disk. List<Photo> photos = place.getPhotos();
Photo photo = photos.get(new Random().nextInt(photos.size()));
BufferedImage image = photo.download().getImage();
File file = new File("test.jpg");
file.createNewFile();
ImageIO.write(image, "jpg", file); You can also specify a max width and max height for the image. The aspect ratio of the image will always be maintained. BufferedImage image = photo.download(100, 100).getImage(); To specify one and not the other, just set one of them to -1. If you do not specify them, the max size (1600) will be passed. NOTE: You must pass at least one of the size parameters. If you are working on Android, javax.imageio is not implemented, so you can create a bitmap from a photo with. InputStream stream = photo.download().getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(stream); Remember not to execute this code on the main thread. AutocompletePlace predictionYou can receive auto-complete predictions for Places with: List<Prediction> predictions = client.getPlacePredictions("Empire"); As you might expect, The Empire State Building is the first result returned here. The prediction object contains a human-readable description and a Place accessor so you can easily build a UI around it. (Particularly useful for Android development) Query predictionYou can also receive auto-complete predictions for Places with general queries such as "pizza in New York". List<Prediction> predictions = client.getQueryPredictions("pizza in New York"); Android integrationJust remember that if you are using this library with Android you should never execute network code on the main thread. Either run it in another thread... new Thread(new Runnable() {
public void run() {
// do something
}
}).start(); ...or run it in an AsyncTask. DocumentationDocumentation for this project can be found at this location. BuildThis project uses Apache Maven. Create a file called |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论