Firmy i inne ciekawe miejsca

Wybierz platformę: Android iOS JavaScript

Domyślnie na mapie podstawowej wyświetlają się ważne miejsca (POI) wraz z odpowiadającymi im ikonami. Ważne miejsca to m.in. parki, szkoły i budynki rządowe.

Dodatkowo, gdy typ mapy to normal, domyślnie wyświetlają się biznesowe ważne miejsca. Biznesowe ważne miejsca to m.in. sklepy, restauracje i hotele. Biznesowe ważne miejsca na mapach wnętrz (rzutach pięter) wyświetlają się tylko w trybie uproszczonym.

Ważne miejsce odpowiada identyfikatorowi miejsca Place ID zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są ważnymi miejscami, ale fontanny zwykle nie (chyba że mają znaczenie historyczne lub są zabytkami).

Nasłuchiwanie zdarzeń kliknięcia ważnych miejsc

Jeśli chcesz reagować, gdy użytkownik kliknie ważne miejsce, możesz użyć metody OnPoiClickListener, jak pokazano w tym przykładzie kodu:

Kotlin

internal class OnPoiClickDemoActivity : AppCompatActivity(), OnMapReadyCallback, OnPoiClickListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.poi_click_demo)
        val mapFragment = supportFragmentManager.findFragmentById(R.id.map)
                as SupportMapFragment
        mapFragment.getMapAsync(this)
    }

    override fun onMapReady(map: GoogleMap) {
        map.setOnPoiClickListener(this)
    }

    override fun onPoiClick(poi: PointOfInterest) {
        Toast.makeText(this, """Clicked: ${poi.name}
            Place ID:${poi.placeId}
            Latitude:${poi.latLng.latitude} Longitude:${poi.latLng.longitude}""",
            Toast.LENGTH_SHORT
        ).show()
    }
}

      

Java

class OnPoiClickDemoActivity extends AppCompatActivity implements
    OnMapReadyCallback, GoogleMap.OnPoiClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.poi_click_demo);
        SupportMapFragment mapFragment;
        mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        map.setOnPoiClickListener(this);
    }

    @Override
    public void onPoiClick(PointOfInterest poi) {
        Toast.makeText(this, "Clicked: " +
                poi.name + "\nPlace ID:" + poi.placeId +
                "\nLatitude:" + poi.latLng.latitude +
                " Longitude:" + poi.latLng.longitude,
            Toast.LENGTH_SHORT).show();
    }
}

      

Ważne miejsca wyświetlają się na mapie domyślnie, ale nie ma domyślnego interfejsu użytkownika po kliknięciu. Oznacza to, że gdy użytkownik kliknie ważne miejsce, interfejs API nie wyświetli automatycznie okna informacyjnego ani żadnego innego interfejsu użytkownika.

Jak widać w powyższym przykładzie, metodę OnPoiClickListener ustawiasz na mapie, wywołując calling GoogleMap.setOnPoiClickListener(OnPoiClickListener). Gdy użytkownik kliknie ważne miejsce, Twoja aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest) wskazujące ważne miejsce, które użytkownik kliknął. Obiekt PointOfInterest zawiera współrzędne geograficzne, identyfikator miejsca i nazwę ważnego miejsca.

Wyłączanie wyświetlania ważnych miejsc na mapie

Możesz ukryć ważne miejsca, stosując style niestandardowe do wszystkich ważnych miejsc lub do określonych kategorii ważnych miejsc.

Ta deklaracja stylu JSON ukrywa wszystkie biznesowe ważne miejsca na mapie:

[
  {
    "featureType": "poi.business",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

Inny przykład: ten kod JSON upraszcza wyświetlanie wszystkich kategorii ważnych miejsc:

[
  {
    "featureType": "poi",
    "stylers": [
      { "visibility": "simplified" }
    ]
  }
]

Kod w języku Java i inne szczegóły znajdziesz w przewodniku Ukrywanie elementów mapy za pomocą stylów.