---
read_when:
    - การเพิ่มการรองรับ Node สำหรับตำแหน่งหรือส่วนติดต่อผู้ใช้สำหรับสิทธิ์
    - การออกแบบสิทธิ์เข้าถึงตำแหน่งของ Android หรือพฤติกรรมการทำงานในเบื้องหน้า
summary: คำสั่งตำแหน่งสำหรับโหนด (location.get), โหมดสิทธิ์ และลักษณะการทำงานเบื้องหน้าบน Android
title: คำสั่งตำแหน่งที่ตั้ง
x-i18n:
    generated_at: "2026-05-06T09:21:23Z"
    model: gpt-5.5
    provider: openai
    source_hash: 63ed754bfdda1cf379dcb7ac40817c0b93cc1efe4526512d70258072da4bc8a7
    source_path: nodes/location-command.md
    workflow: 16
---

## สรุปสั้น ๆ

- `location.get` เป็นคำสั่งของโหนด (ผ่าน `node.invoke`)
- ปิดโดยค่าเริ่มต้น
- การตั้งค่าแอป Android ใช้ตัวเลือก: ปิด / ขณะใช้งาน
- สวิตช์แยกต่างหาก: ตำแหน่งที่แม่นยำ

## ทำไมจึงใช้ตัวเลือก (ไม่ใช่แค่สวิตช์)

สิทธิ์ของระบบปฏิบัติการมีหลายระดับ เราสามารถแสดงตัวเลือกในแอปได้ แต่ระบบปฏิบัติการยังคงเป็นผู้ตัดสินการอนุญาตจริง

- iOS/macOS อาจแสดง **ขณะใช้งาน** หรือ **เสมอ** ในพรอมป์/การตั้งค่าของระบบ
- แอป Android ปัจจุบันรองรับเฉพาะตำแหน่งขณะใช้งานเบื้องหน้าเท่านั้น
- ตำแหน่งที่แม่นยำเป็นสิทธิ์แยกต่างหาก (iOS 14+ "แม่นยำ", Android "ละเอียด" เทียบกับ "คร่าว ๆ")

ตัวเลือกใน UI กำหนดโหมดที่เราขอ ส่วนการอนุญาตจริงอยู่ในการตั้งค่าของระบบปฏิบัติการ

## โมเดลการตั้งค่า

ต่ออุปกรณ์โหนด:

- `location.enabledMode`: `off | whileUsing`
- `location.preciseEnabled`: bool

พฤติกรรมของ UI:

- การเลือก `whileUsing` จะขอสิทธิ์เบื้องหน้า
- หากระบบปฏิบัติการปฏิเสธระดับที่ขอ ให้ย้อนกลับไปยังระดับสูงสุดที่ได้รับอนุญาตและแสดงสถานะ

## การแมปสิทธิ์ (`node.permissions`)

ไม่บังคับ โหนด macOS รายงาน `location` ผ่านแมปสิทธิ์; iOS/Android อาจไม่รายงาน

## คำสั่ง: `location.get`

เรียกผ่าน `node.invoke`

พารามิเตอร์ (แนะนำ):

```json
{
  "timeoutMs": 10000,
  "maxAgeMs": 15000,
  "desiredAccuracy": "coarse|balanced|precise"
}
```

เพย์โหลดการตอบกลับ:

```json
{
  "lat": 48.20849,
  "lon": 16.37208,
  "accuracyMeters": 12.5,
  "altitudeMeters": 182.0,
  "speedMps": 0.0,
  "headingDeg": 270.0,
  "timestamp": "2026-01-03T12:34:56.000Z",
  "isPrecise": true,
  "source": "gps|wifi|cell|unknown"
}
```

ข้อผิดพลาด (โค้ดแบบเสถียร):

- `LOCATION_DISABLED`: ตัวเลือกถูกปิด
- `LOCATION_PERMISSION_REQUIRED`: ไม่มีสิทธิ์สำหรับโหมดที่ขอ
- `LOCATION_BACKGROUND_UNAVAILABLE`: แอปอยู่เบื้องหลัง แต่อนุญาตเฉพาะขณะใช้งาน
- `LOCATION_TIMEOUT`: ไม่พบตำแหน่งทันเวลา
- `LOCATION_UNAVAILABLE`: ระบบล้มเหลว / ไม่มีผู้ให้บริการ

## พฤติกรรมเบื้องหลัง

- แอป Android ปฏิเสธ `location.get` ขณะอยู่เบื้องหลัง
- เปิด OpenClaw ค้างไว้เมื่อขอตำแหน่งบน Android
- แพลตฟอร์มโหนดอื่นอาจแตกต่างออกไป

## การผสานรวมกับโมเดล/เครื่องมือ

- พื้นผิวเครื่องมือ: เครื่องมือ `nodes` เพิ่มแอ็กชัน `location_get` (ต้องระบุโหนด)
- CLI: `openclaw nodes location get --node <id>`
- แนวทางสำหรับเอเจนต์: เรียกใช้เฉพาะเมื่อผู้ใช้เปิดใช้งานตำแหน่งและเข้าใจขอบเขตแล้ว

## ข้อความ UX (แนะนำ)

- ปิด: "การแชร์ตำแหน่งถูกปิดใช้งาน"
- ขณะใช้งาน: "เฉพาะเมื่อ OpenClaw เปิดอยู่"
- แม่นยำ: "ใช้ตำแหน่ง GPS ที่แม่นยำ ปิดสวิตช์เพื่อแชร์ตำแหน่งโดยประมาณ"

## ที่เกี่ยวข้อง

- [การแยกวิเคราะห์ตำแหน่งของช่องทาง](/th/channels/location)
- [การจับภาพจากกล้อง](/th/nodes/camera)
- [โหมดพูดคุย](/th/nodes/talk)
