2013-06-29 2 views
3

Можно ли использовать его в качестве проекта библиотеки для моего приложения, я хочу использовать функциональность поиска приложений Android Google Maps. Как я могу это сделать, возможно ли это? Заранее спасибо ..Как использовать функцию поиска Google Maps api в моем приложении?

EDIT: Я показал карту Google в моем приложении успешно, я хочу, чтобы включить Google Map функции поиска означает, что я могу в состоянии найти любое место в мире авто предложило поле и выбрав конкретное местоположение и переместите маркер в это место. так как я могу?

Я попытался this и this, но не получает авто предлагаемого текста, почему я не знаю ..

Я хочу люблю:

step1: показать карту с окном поиска

enter image description here

step2: при вводе текста он должен автоматически указывать.

enter image description here

step3: когда нажмите на конкретной карте название переместится в это место

enter image description here

+0

@ArunRaj См. Мое редактирование –

ответ

0

Я думаю, вы должны взглянуть на API Карт Google для Android в https://developers.google.com/maps/documentation/android/

Google Search Appliance не имеет каких-либо функций отображения или гео-поиска прямо сейчас.

+0

см. Мое редактирование выше, что я хочу точно .. –

1

Вы можете легко обеспечить такую ​​функцию поиска, используя API-интерфейс Places и API-интерфейс Geocode (оба помогут вам в соответствии с вашими потребностями).

Прочитайте ниже документацию для вашей помощи.

  1. GeoCode API
  2. Places API

    Я бы рекомендовал использовать Places API для вашей потребности (По моим наблюдениям на вашем USECASE). Но вы также можете использовать геокод, если вам нужно.

Много рабочих ссылок и примеров есть.

Для запуска, ниже моя ссылка:

  1. PlacesAPI AutoComplete feature, Hotel Finder with Autocomplete
  2. GeocodeAPI Simple GeoCoding

Примечание: Я предложил JavaScript API. Но не уверен, поможет ли это вам в среде Android (я не знаю ничего о среде Android).

+0

Спасибо, но мне это нужно в среде Android. :( –

+0

@shylendra: Лучше попробуйте его с помощью кордовы, но не знаете проблем, совсем не использовали его. Просто предлагаю вам попробовать. – ArunRaj

+0

Хорошо спасибо за ваше предложение –

1

Ни один Апи не может помочь вам придется использовать несколько Google API в

Шаг1. Внедрение автозаполнения Google Place Read this

Шаг2. Вы должны использовать геокодирование, чтобы преобразовать адрес в широту и долготу. check this

Шаг 3. Теперь вы можете нарисовать эти латыни на карте.

Это работает для меня.

+0

см. Мое редактирование выше, что я хочу точно .. –

+0

ok для этого вы хотите еще одно информационное окно маркера, если хотите, я могу дать пример кода, из которого вы можете скопировать код, но мне нужно время, чтобы дать вам это. – Asheesh

0

Это, как я это сделал ---

Android Manifest файл должен содержать следующие строки:

<uses-library 
      android:name="com.google.android.maps" 
      android:required="true" > 
     </uses-library> 

     <!-- You must insert your own Google Maps for Android API v2 key in here. --> 
     <meta-data 
      android:name="com.google.android.maps.v2.API_KEY" 
      android:value="<put your api key value here>" /> 

Расположение XML файл должен иметь следующую помимо всего дополнительно:

<fragment 
      android:name="com.google.android.gms.maps.SupportMapFragment" 
      android:id="@+id/map" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

Адрес java-файл должны иметь что-то вроде этого:

View mapView = null; 
private GoogleMap mMap; 
mMap = supportMapFragment.getMap(); 
mapView = (View) view.findViewById(R.id.map); 

SupportMapFragment supportMapFragment = (SupportMapFragment) fragmentManager 
       .findFragmentById(R.id.map); 

     if(mMap != null){ 
      mMap.setMyLocationEnabled(true); 
     } 

    if(mMap != null) 
      mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

       @Override 
       public void onMapLongClick(LatLng latLng) { 
        new EditMap().execute("", String.valueOf(latLng.latitude), String.valueOf(latLng.longitude)); 
       } 
      }); 


      class EditMap extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     /** 
     * getting Albums JSON 
     * */ 
     protected String doInBackground(String... args) { 
      String address = args[0]; 
      double latitude = Double.parseDouble(args[1]); 
      double longitude = Double.parseDouble(args[2]); 

      return editMap(address, latitude, longitude); 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String result) { 
      if(!result.equals("")) 
       ToastUtil.ToastShort(getActivity(), result); 
      else { 
       mMap.clear(); 
       mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(attvalue)); 
       mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 11)); 
      } 

     } 
    } 

Примечание:

Это минимальные требования для установки местоположения, как вы выбираете из карты, которая заполняет место в тексте.

Существует фоновый поток, который работает, когда вы долгое время нажимаете местоположение на карте. Определяемый для этого прослушиватель setOnMapLongClickListener, как вы видите выше.

Выполнение будет помещать маркер в точное место, которое вы выбрали для отметки как установлено.

После того, как вы выбрали местоположение маркером, появится кнопка done. Эта кнопка done подтверждает то, что вы выбрали, и установит это для текстового поля.

В приведенном выше коде используется метод editMap для редактирования местоположения карты.

Реализация будет, как это сделано здесь:

private String editMap(String address, double latitude, double longitude) { 
     String keyword = null; 

     try { 
      Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
      if(!address.equals("")){ 
       keyword = address; 
       java.util.List<android.location.Address> result = geocoder 
       .getFromLocationName(keyword, 1); 
       if (result.size() > 0) { 
        lat = (double) result.get(0).getLatitude(); 
        lng = (double) result.get(0).getLongitude(); 
        attvalue = address; 
       } else { 
        return "Record not found"; 
       } 
      } else { 

       String sUrl = "http://google.com/maps/api/geocode/json?latlng="+latitude+","+longitude+"&sensor=true"; 

       DefaultHttpClient client = new DefaultHttpClient(); 
       HttpGet get = new HttpGet(sUrl); 
       HttpResponse r = client.execute(get); 
       int status = r.getStatusLine().getStatusCode(); 
       if(status == 200){ 
        HttpEntity e = r.getEntity(); 
        String data = EntityUtils.toString(e); 

        try{ 
         JSONObject jsonObject = new JSONObject(data); 
         JSONArray results = jsonObject.getJSONArray("results"); 
         JSONObject addressObject = results.getJSONObject(0); 
         JSONArray addressComp = addressObject.getJSONArray("address_components"); 

         String city = "", state = ""; 
         for(int i=0; i < addressComp.length(); i++){ 
          JSONArray types = addressComp.getJSONObject(i).getJSONArray("types"); 
          if(city.equals("") && types.getString(0).equals("locality")) 
           city = addressComp.getJSONObject(i).getString("long_name"); 
          if(state.equals("") && types.getString(0).equals("administrative_area_level_1")) 
           state = addressComp.getJSONObject(i).getString("long_name"); 

          if(!city.equals("") && !state.equals("")) 
           break; 
         } 
         attvalue = city + ", " + state; 
        } catch (JSONException e1) { 
         e1.printStackTrace(); 
        } 
        lat = latitude; 
        lng = longitude; 
       }else{ 
        return "Location Not Found"; 
       } 
      } 
     } catch (IOException io) { 
      return "Connection Error"; 
     } 
     return ""; 
    } 

Я надеюсь, что этого достаточно, чтобы помочь вам.

+0

см. мое редактирование выше, что я хочу точно .. –

 Смежные вопросы

  • Нет связанных вопросов^_^