【问题标题】:How to get gas station along my route in Google Maps Android API v2如何在 Google Maps Android API v2 中沿着我的路线前往加油站
【发布时间】:2015-04-18 12:13:23
【问题描述】:

我有一个在起点和终点之间绘制路线的应用程序。 我需要在这条路线上标记加油站。 我已经阅读了谷歌地方 API。 你能告诉我在这种情况下如何使用 Places API 吗?

【问题讨论】:

    标签: android google-maps-android-api-2 google-places-api


    【解决方案1】:

    第一个你需要谷歌地图 api 密钥..你可以从谷歌获得一个..查看 this link。 现在,当您拥有 api 密钥时...您可以使用它来获取所需的位置 this link https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=Your_Latitude,Your_Longitude&radius=In_Metres&types=What_You_Want_To_Search&key=Your_API_KEY

    对于地点类型的支持..查看this link

    快乐编码:)

    【讨论】:

      【解决方案2】:

      你可以从这里处理分类搜索。你可以有详细的知识

      https://developers.google.com/maps/documentation/android/intents
      

      如果您通过一般搜索词,Google 地图将尝试在您指定的经纬度附近找到符合您条件的位置。如果未指定位置,Google 地图将尝试查找附近的列表。例如:

      // Search for restaurants nearby
      Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
      Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
      mapIntent.setPackage("com.google.android.apps.maps");
      startActivity(mapIntent);
      
      
      // Search for restaurants in San Francisco
      Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants");
      Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
      mapIntent.setPackage("com.google.android.apps.maps");
      startActivity(mapIntent);
      

      加油站也可以这样做

      【讨论】:

      • 我查过了。在这种情况下将打开谷歌地图(官方应用程序) - 它不适合我。在我的应用程序中,我有 2 个用于起点和目的地的文本字段以及按钮(加载方向),当我按下按钮时,我需要在我的构建路线上标记加油站
      • 我不知道该怎么做
      【解决方案3】:

      查看this 教程。你可能会觉得这很有帮助

      GooglePlaces.java
      package com.androidhive.googleplacesandmaps;
      
      import org.apache.http.client.HttpResponseException;
      
      import android.util.Log;
      
      import com.google.api.client.googleapis.GoogleHeaders;
      import com.google.api.client.http.GenericUrl;
      import com.google.api.client.http.HttpRequest;
      import com.google.api.client.http.HttpRequestFactory;
      import com.google.api.client.http.HttpRequestInitializer;
      import com.google.api.client.http.HttpTransport;
      import com.google.api.client.http.javanet.NetHttpTransport;
      import com.google.api.client.http.json.JsonHttpParser;
      import com.google.api.client.json.jackson.JacksonFactory;
      
      @SuppressWarnings("deprecation")
      public class GooglePlaces {
      
          /** Global instance of the HTTP transport. */
          private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
      
          // Google API Key
          private static final String API_KEY = "AIzaSyCRLa4LQZWNQBcjCYcIVYA45i9i8zfClqc";
      
          // Google Places serach url's
          private static final String PLACES_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?";
          private static final String PLACES_TEXT_SEARCH_URL = "https://maps.googleapis.com/maps/api/place/search/json?";
          private static final String PLACES_DETAILS_URL = "https://maps.googleapis.com/maps/api/place/details/json?";
      
          private double _latitude;
          private double _longitude;
          private double _radius;
      
          /**
           * Searching places
           * @param latitude - latitude of place
           * @params longitude - longitude of place
           * @param radius - radius of searchable area
           * @param types - type of place to search
           * @return list of places
           * */
          public PlacesList search(double latitude, double longitude, double radius, String types)
                  throws Exception {
      
              this._latitude = latitude;
              this._longitude = longitude;
              this._radius = radius;
      
              try {
      
                  HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
                  HttpRequest request = httpRequestFactory
                          .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
                  request.getUrl().put("key", API_KEY);
                  request.getUrl().put("location", _latitude + "," + _longitude);
                  request.getUrl().put("radius", _radius); // in meters
                  request.getUrl().put("sensor", "false");
                  if(types != null)
                      request.getUrl().put("types", types);
      
                  PlacesList list = request.execute().parseAs(PlacesList.class);
                  // Check log cat for places response status
                  Log.d("Places Status", "" + list.status);
                  return list;
      
              } catch (HttpResponseException e) {
                  Log.e("Error:", e.getMessage());
                  return null;
              }
      
          }
      
          /**
           * Searching single place full details
           * @param refrence - reference id of place
           *                 - which you will get in search api request
           * */
          public PlaceDetails getPlaceDetails(String reference) throws Exception {
              try {
      
                  HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
                  HttpRequest request = httpRequestFactory
                          .buildGetRequest(new GenericUrl(PLACES_DETAILS_URL));
                  request.getUrl().put("key", API_KEY);
                  request.getUrl().put("reference", reference);
                  request.getUrl().put("sensor", "false");
      
                  PlaceDetails place = request.execute().parseAs(PlaceDetails.class);
      
                  return place;
      
              } catch (HttpResponseException e) {
                  Log.e("Error in Perform Details", e.getMessage());
                  throw e;
              }
          }
      
          /**
           * Creating http request Factory
           * */
          public static HttpRequestFactory createRequestFactory(
                  final HttpTransport transport) {
              return transport.createRequestFactory(new HttpRequestInitializer() {
                  public void initialize(HttpRequest request) {
                      GoogleHeaders headers = new GoogleHeaders();
                      headers.setApplicationName("AndroidHive-Places-Test");
                      request.setHeaders(headers);
                      JsonHttpParser parser = new JsonHttpParser(new JacksonFactory());
                      request.addParser(parser);
                  }
              });
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-15
        • 2013-03-30
        • 2013-02-12
        • 1970-01-01
        • 2013-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多