Подтвердить что ты не робот

Android Google Map - Щелчок маркера открывает новую активность или большее окно

Я искал помощь по внедрению OnMarkerClickListener, но ничего, что я нашел, не сработало. Это мой маркер ниже, и при нажатии на него меняется только цвет (голубой). Я ищу его, чтобы открыть большее окно, чтобы я мог добавить дополнительную информацию. Возможно ли это?

     googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(49.378,-0.3904))
    .title("Hello World")
    .snippet("This is my test app")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

Маркер отлично работает на моей карте, но теперь я хотел бы нажать маркер и открыть его для новой активности/страницы или большего окна, с чем легче работать. Поскольку я являюсь настоящим новичком в создании приложений, если кто-то успешно получил рабочий пример, можете ли вы установить ссылку или какой-то код.

Спасибо заранее!

Edit:

Из предложенного учебника я изменил часть MainActivity.java.

Я добавил в OnMarkerClickListener и решил добавить нереализованные методы в открытый класс

  public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {

Под частным void setUpMap() Я добавил в свой код: private Marker myMarker, слушатель setonMarkerclick и myMarker =,:

       private Marker myMarker;
         {
googlemap.setOnMarkerClickListener(this);

myMarker = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(LatLng))
    .title("Hello World")
    .snippet("My First App")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

 }

В невыполненном методе внизу я:

   @Override
   public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub 

return false;

Что мне нужно изменить в публичной части Boolean OnMarkerClick? Я не получаю никаких ошибок, но просто не работает. Что еще мне нужно добавить или изменить?

Любая помощь приветствуется!

4b9b3361

Ответ 1

События кликов маркера

Не привязывайтесь к маркеру после клика на Android-карте v2

Цитата из вышеприведенного сообщения

Вы можете использовать OnMarkerClickListener для прослушивания событий щелчка на маркере. Чтобы установить этот прослушиватель на карте, вызовите GoogleMap.setOnMarkerClickListener(OnMarkerClickListener). Когда пользователь нажимает на маркер, будет вызываться onMarkerClick (Marker), и маркер будет передан в качестве аргумента. Этот метод возвращает логическое значение, указывающее, использовало ли вы событие (т.е. Вы хотите подавить поведение по умолчанию). Если он вернет значение false, в дополнение к вашему пользовательскому поведению произойдет поведение по умолчанию. Поведение по умолчанию для события щелчка маркера - показать его информационное окно (если доступно) и переместить камеру таким образом, чтобы маркер находился на карте.

https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.

Используйте OnMarkerClickListener на своем маркере.

Проверьте ссылку на фрагменты кода

API Карт Google v2: как сделать маркеры доступными для кликов?

Пример: Работает на моем телефоне

        Marker source,destination; 
        GoogleMap mMap; 
        mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                                .getMap(); 
        source = mMap.addMarker(new MarkerOptions()
                .position(sc)
                .title("MyHome")
                .snippet("Bangalore")    
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));

         destination= mMap.addMarker(new MarkerOptions()
                .position(lng)
                .title("MapleBear Head Office")
                .snippet("Jayanager")
                .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));
                mMap.setOnMarkerClickListener(new OnMarkerClickListener()
                {

                    @Override
                    public boolean onMarkerClick(Marker arg0) {
                        if(arg0.getTitle().equals("MyHome")) // if marker source is clicked
                             Toast.makeText(MainActivity.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
                        return true;
                    }

                });       

Ответ 2

Этот код обрабатывает событие щелчка производителя и загружает новый макет (XML) с некоторой информацией:

/**
 * adding individual markers, displaying text on on marker click on a
 * bubble, action of on marker bubble click
 */
private final void addLocationsToMap() {
    int i = 0;
    for (Stores store : storeList) {
        LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());

        MarkerOptions marker = new MarkerOptions()
                .position(l)
                .title(store.getStoreName())
                .snippet("" + i)
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
        googleMap.addMarker(marker);
        ++i;
    }

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

        @Override
        public void onInfoWindowClick(Marker marker) {

            try {
                popUpWindow.setVisibility(View.VISIBLE);
                Stores store = storeList.get(Integer.parseInt(marker
                        .getSnippet()));

                // set details
                email.setText(store.getEmail());
                phoneNo.setText(store.getPhone());
                address.setText(store.getAddress());

                // setting test value to phone number
                tempString = store.getPhone();
                SpannableString spanString = new SpannableString(tempString);
                spanString.setSpan(new UnderlineSpan(), 0,
                        spanString.length(), 0);
                phoneNo.setText(spanString);

                // setting test value to email
                tempStringemail = store.getEmail();

                SpannableString spanString1 = new SpannableString(tempStringemail);
                spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
                email.setText(spanString1);

                storeLat = store.getLatitude();
                storelng = store.getLongtitude();

            } catch (ArrayIndexOutOfBoundsException e) {
                Log.e("ArrayIndexOutOfBoundsException", " Occured");
            }

        }
    });

}

Ответ 3

Если вам нужно событие Нажмите на рынке, этот код это решение.

private GoogleMap mGoogleMap;


mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
        {

            @Override
            public boolean onMarkerClick(Marker arg0) {
                if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker  source is clicked
                    Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
                return true;
            }

        });

Удача