จัดการเหตุการณ์

ตัวอย่างนี้แสดงวิธีฟังและจัดการเหตุการณ์บางอย่างบนแผนที่

ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบ

เริ่มต้นใช้งาน

คุณต้องกําหนดค่าสภาพแวดล้อมการพัฒนาก่อนจึงจะลองใช้โค้ดตัวอย่างได้ ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างโค้ด Maps SDK สำหรับ Android

ดูโค้ด

Kotlin

class EventsDemoActivity : AppCompatActivity(), OnMapClickListener,
    OnMapLongClickListener, OnCameraIdleListener, OnMapReadyCallback {

    private lateinit var tapTextView: TextView
    private lateinit var cameraTextView: TextView
    private lateinit var map: GoogleMap

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.events_demo)
        tapTextView = findViewById(R.id.tap_text)
        cameraTextView = findViewById(R.id.camera_text)
        val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment?
        mapFragment?.getMapAsync(this)
    }

    override fun onMapReady(googleMap: GoogleMap) {
        // return early if the map was not initialised properly
        map = googleMap
        map.setOnMapClickListener(this)
        map.setOnMapLongClickListener(this)
        map.setOnCameraIdleListener(this)
    }

    override fun onMapClick(point: LatLng) {
        tapTextView.text = "tapped, point=$point"
    }

    override fun onMapLongClick(point: LatLng) {
        tapTextView.text = "long pressed, point=$point"
    }

    override fun onCameraIdle() {
        if (!::map.isInitialized) return
        cameraTextView.text = map.cameraPosition.toString()
    }
}

      

Java

public class EventsDemoActivity extends SamplesBaseActivity
        implements OnMapClickListener, OnMapLongClickListener, OnCameraIdleListener,
        OnMapReadyCallback {

    private TextView tapTextView;
    private TextView cameraTextView;
    private GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.events_demo);

        tapTextView = findViewById(R.id.tap_text);
        cameraTextView = findViewById(R.id.camera_text);

        SupportMapFragment mapFragment =
                (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        applyInsets(findViewById(R.id.map_container));
    }

    @Override
    public void onMapReady(GoogleMap map) {
        this.map = map;
        this.map.setOnMapClickListener(this);
        this.map.setOnMapLongClickListener(this);
        this.map.setOnCameraIdleListener(this);
    }

    @Override
    public void onMapClick(LatLng point) {
        tapTextView.setText("tapped, point=" + point);
    }

    @Override
    public void onMapLongClick(LatLng point) {
        tapTextView.setText("long pressed, point=" + point);
    }

    @Override
    public void onCameraIdle() {
        cameraTextView.setText(map.getCameraPosition().toString());
    }
}

      

โคลนและเรียกใช้ตัวอย่าง

คุณต้องใช้ Git เพื่อเรียกใช้ตัวอย่างนี้ในเครื่อง คำสั่งต่อไปนี้จะโคลนที่เก็บแอปพลิเคชันตัวอย่าง

git clone git@github.com:googlemaps-samples/android-samples.git

นําเข้าโปรเจ็กต์ตัวอย่างไปยัง Android Studio โดยทำดังนี้

  1. ใน Android Studio ให้เลือกไฟล์ > ใหม่ > นำเข้าโปรเจ็กต์
  2. ไปที่ตำแหน่งที่คุณบันทึกที่เก็บไว้ แล้วเลือกไดเรกทอรีโปรเจ็กต์สำหรับ Kotlin หรือ Java

    • Kotlin: PATH-REPO/android-samples/ApiDemos/kotlin
    • Java: PATH-REPO/android-samples/ApiDemos/java
  3. เลือกเปิด Android Studio จะสร้างโปรเจ็กต์โดยใช้เครื่องมือบิลด์ Gradle
  4. สร้างไฟล์ secrets.properties ว่างในไดเรกทอรีเดียวกับไฟล์ local.properties ของโปรเจ็กต์ ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์นี้ได้ที่หัวข้อเพิ่มคีย์ API ลงในโปรเจ็กต์
  5. รับคีย์ API จากโปรเจ็กต์ที่เปิดใช้ Maps SDK สำหรับ Android
  6. เพิ่มสตริงต่อไปนี้ลงใน secrets.properties โดยแทนที่ YOUR_API_KEY ด้วยค่าของคีย์ API

    MAPS_API_KEY=YOUR_API_KEY
  7. เรียกใช้แอป