商家和其他搜尋點

選取平台: Android iOS JavaScript

根據預設,搜尋點 (POI) 與對應的圖示會一併顯示在基本地圖上。搜尋點包括公園、學校、政府大樓等。

此外,如果地圖類型為 normal,預設會顯示「商家」搜尋點。商家搜尋點代表商家,例如商店、餐廳、飯店等。室內地圖 (平面圖) 上的商家搜尋點,只會在精簡模式地圖顯示。

每個搜尋點都會對應至 Places SDK for Android 中定義的一個地點 ID。舉例來說,休閒公園是搜尋點,但像噴水池這類的項目通常就不是搜尋點 (除非其本身具有國家或歷史意義)。

監聽搜尋點的點擊事件

如果您想要回應輕觸搜尋點的使用者,可以使用 OnPoiClickListener,如以下程式碼範例所示:

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();
    }
}

      

根據預設,地圖上會顯示搜尋點,但系統不會提供預設的點選式 UI;也就是說,使用者輕觸搜尋點時,API 不會自動顯示資訊視窗或任何其他使用者介面。

如以上範例所示,您可以透過呼叫 GoogleMap.setOnPoiClickListener(OnPoiClickListener) 在地圖上設定 OnPoiClickListener。 當使用者按一下 (輕觸) 搜尋點時,您的應用程式會收到 OnPoiClick(PointOfInterest) 事件,指出該搜尋點。PointOfInterest 包含經緯度座標、地點 ID 和搜尋點名稱。

停止在地圖上顯示搜尋點

將自訂樣式套用至全部或特定類別的搜尋點,即可加以隱藏。

下列 JSON 樣式宣告會隱藏地圖上的所有商家搜尋點:

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

再舉一個例子,下列 JSON 簡化了所有類別搜尋點的顯示方式:

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

如需 Java 程式碼和其他詳細資料,請參閱「使用樣式設定隱藏地圖項目」指南。