Firmy i inne ciekawe miejsca

Wybierz platformę: Android iOS JavaScript

Domyślnie ciekawe miejsca (POI) wyświetlają się na mapie podstawowej wraz z odpowiednimi ikonami. Ciekawe miejsca to m.in. parki, szkoły, budynki administracyjne.

Dodatkowo ważne miejsca związane z firmą są domyślnie wyświetlane na mapie, gdy typ mapy to normal. Obiekty firmowe to firmy takie jak sklepy, restauracje, hotele itp. Ważne miejsca firm na mapach wewnętrznych (planach pięter) są widoczne tylko na mapie w trybie uproszczonym.

Miejsce docelowe odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Na przykład parki rekreacyjne są punktami orientacyjnymi, ale takie obiekty jak fontanny nie są zwykle punktami orientacyjnymi (chyba że mają znaczenie narodowe lub historyczne).

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

Jeśli chcesz reagować na kliknięcie przez użytkownika punktu POI, 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();
    }
}

      

Miejsca docelowe są domyślnie widoczne na mapie, ale nie ma domyślnego interfejsu po kliknięciu. Oznacza to, że interfejs API nie wyświetla automatycznie okna z informacjami ani żadnego innego interfejsu użytkownika, gdy użytkownik kliknie punkt zainteresowania.

Jak widać w powyższym przykładzie, możesz ustawić parametr OnPoiClickListener na mapie, wywołując funkcję GoogleMap.setOnPoiClickListener(OnPoiClickListener). Gdy użytkownik kliknie punkt zainteresowania, aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest) wskazujące ten punkt. Wartość PointOfInterest zawiera współrzędne geograficzne, identyfikator miejsca i nazwę punktu zainteresowania.

Zablokuj wyświetlanie punktów POI na mapie

Możesz ukryć punkty zainteresowania, stosując niestandardowe style do wszystkich punktów zainteresowania lub do określonych kategorii punktów zainteresowania.

Poniższa deklaracja stylu JSON ukrywa na mapie wszystkie punkty zainteresowania związane z firmą:

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

Ten kod JSON upraszcza wyświetlanie wszystkich kategorii punktów zainteresowania:

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

Kod Java i inne szczegóły znajdziesz w przewodniku ukrywanie elementów mapy za pomocą stylów.