Firmy i inne ciekawe miejsca

Wybierz platformę: Android iOS JavaScript

Domyślnie ciekawe miejsca (POI) są wyświetlane na mapie podstawowej wraz z odpowiadającymi im ikonami. Ważne miejsca to parki, szkoły, budynki rządowe i wiele innych.

Poza tym ważne miejsca biznesowe są domyślnie wyświetlane na mapie, jeśli typ mapy to normal. Ważne miejsca biznesowe to m.in. sklepy, restauracje i hotele. Ważne miejsca biznesowe na mapach obiektów (planach pięter) są wyświetlane tylko na mapie w wersji uproszczonej.

Ciekawe miejsce odpowiada identyfikatorowi miejsca zdefiniowanemu w pakiecie SDK Miejsc na Androida. Np. parki rekreacyjne są ważnym miejscem, ale takie obiekty jak fontanny wodne zwykle nie są ważnym miejscem (chyba że mają znaczenie na poziomie krajowym lub historycznym).

Wykrywaj zdarzenia kliknięć ważnych miejsc

Jeśli chcesz odpowiedzieć użytkownikowi, który kliknie ważne miejsce, możesz użyć OnPoiClickListener, jak 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 są domyślnie wyświetlane na mapie, ale po kliknięciu nie ma domyślnego interfejsu użytkownika. Oznacza to, że po kliknięciu ważnego miejsca interfejs API nie wyświetla automatycznie okna informacyjnego ani żadnego innego interfejsu użytkownika.

Jak widać w powyższym przykładzie, ustawiasz OnPoiClickListener na mapie, wywołując GoogleMap.setOnPoiClickListener(OnPoiClickListener). Gdy użytkownik kliknie ważne miejsce, aplikacja otrzyma zdarzenie OnPoiClick(PointOfInterest) wskazujące kliknięte miejsce. PointOfInterest zawiera współrzędne szerokości i długości geograficznej, identyfikator miejsca oraz nazwę ciekawego miejsca.

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

Możesz ukryć ciekawe miejsca, stosując style niestandardowe do wszystkich lub wybranych kategorii ważnych miejsc.

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

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

Innym przykładem jest ten JSON, aby uprościć wyświetlanie wszystkich kategorii ważnych miejsc:

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

Kod w Javie i inne informacje znajdziesz w przewodniku na temat ukrywania funkcji mapy ze stylem.