2016-02-04 1 views
0

Как я могу получить координаты (x, y) на экране карты, где пользователь прикасается. Моя забота - получить позицию щелкнутого маркера на экране. В настоящее время я могу получить LatLng щелкнутого маркера, но не могу получить очки на экране. Я хочу показать диалоговое окно с щелчком маркера, как customInfoWindow. Просьба предложить любое решение. ThanksПолучить точку, в которой маркер отображается на карте в Android

+0

Вы можете конвертировать гео-точек х, у координаты экрана, проверить это Http://stackoverflow.com/questions/10685408/how-to-convert-a-geopoint-to-a-hardware-screen-point –

+0

Я использую объект GoogleMap, а не MapView, поэтому реализация дает проблемы. –

+0

Объект 'mMap' является объектом GoogleMap в моем коде. –

ответ

0

Вы можете получить физический адрес местоположения, если у вас есть его координаты. Он называется Обратное геокодирование.

Установите onMarkerClickListener на свой маркер, а затем измените геокодирование координат, чтобы получить адрес асинхронно, а затем установите результат в информационном окне маркера.

См. Статью this за все детали.

Пример кода, чтобы получить физический адрес -

class GetAddress extends AsyncTask<LatLng, Void, String> { 

    @Override 
    protected String doInBackground(LatLng... params) { 
     Geocoder geocoder = new Geocoder(context, Locale.getDefault()); 
     String result = "No Result"; 
     try { 
      List<Address> addresses = geocoder.getFromLocation(params[0].latitude, params[0].longitude, 1); 

      if (addresses != null && addresses.size() != 0) { 
       Address address = addresses.get(0); 
       ArrayList<String> addressFragments = new ArrayList<>(); 
       for (int i = 0; i < address.getMaxAddressLineIndex(); i++) { 
        addressFragments.add(address.getAddressLine(i)); 
       } 

       result = TextUtils.join(System.getProperty("line.separator"), 
         addressFragments); 
       return result; 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return result; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     //Here set the address to where ever you want. 
    } 

Установите слушателя на маркер -

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 
      new GetAddress().execute(marker.getPosition()); 
     } 
    }); 
+0

Спасибо, см. Обновленный вопрос. Вы абсолютно правы для получения физического адреса, но мне нужна ось/координаты экрана, где есть маркер с щелчком. –

+0

Если вы хотите отобразить диалоговое окно, вы можете просто использовать информационное окно маркера. Вы можете настроить информационное окно по умолчанию, как хотите. Когда вы нажимаете на него, появляется информационное окно, прикрепленное к маркеру. –

+0

Но информационное окно не имеет контроля над отдельными кнопками в нем. Он в целом используется как один вид. –

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

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