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.

Ponadto ważne miejsca związane z firmą są domyślnie wyświetlane na mapie, gdy typ mapy to normal. Obiekty firmowe to m.in. sklepy, restauracje i hotele. Punkty orientacyjne 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ą zazwyczaj punktami orientacyjnymi (chyba że mają znaczenie narodowe lub historyczne).

Odbieranie zdarzeń kliknięcia punktów POI

Jeśli chcesz zareagować na kliknięcie przez użytkownika punktu POI, możesz użyć funkcji 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 informacyjnego 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 otrzymuje zdarzenie OnPoiClick(PointOfInterest), które wskazuje kliknięty przez użytkownika punkt zainteresowania. Wartość PointOfInterest zawiera współrzędne geograficzne, identyfikator miejsca i nazwę punktu zainteresowania.

Wyłączanie wyświetlania punktów POI na mapie

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

Poniższa deklaracja stylu w formacie 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.