---
title: "Interactive Operations with Shiny GUI"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Interactive Operations with Shiny GUI}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

## Introduction

Starting from version 0.9.0, `amapGeocode` includes a built-in Shiny application (`amap_gui()`) that provides a user-friendly graphical interface for all major package functions. This is particularly useful for users who prefer a GUI over command-line operations or for quick, interactive tasks.

To launch the application, simply run:

```r
library(amapGeocode)
amap_gui()
```

## Features

The Shiny application is organized into four main tabs, mirroring the package's core functionality:

### 1. Geocoding (Address to Coordinate)

The **Geocoding** tab allows you to convert addresses into longitude and latitude coordinates.

*   **Single Address Mode**: Enter an address and an optional city to get instant results.
*   **Batch Mode**: Upload a CSV file containing addresses. You can select the column containing the address and the city (optional). The application will process the file and provide a downloadable CSV with coordinates.

### 2. Reverse Geocoding (Coordinate to Address)

The **Reverse Geocoding** tab converts coordinates back into structured addresses and administrative information.

*   **Single Point Mode**: Input longitude and latitude manually.
*   **Batch Mode**: Upload a CSV file with coordinate columns. The app will batch process these and return detailed location info (formatted address, country, province, city, district, etc.).

### 3. Coordinate Conversion

The **Convert Coords** tab handles coordinate system transformations.

*   **Supported Systems**: Convert from GPS (WGS84), MapBar, or Baidu (BD09) coordinates to the AutoNavi (GCJ02) system.
*   **Batch Support**: Like other tabs, you can process single points or upload CSV files for bulk conversion.

### 4. Settings

Configure global API settings directly within the app:

*   **API Key**: Set your AutoNavi API key. If you've already set it via `options(amap_key = "...")` in R, it will be pre-filled.
*   **Parallel Processing**: Adjust the number of concurrent requests (`max_active`) for batch operations.
*   **Throttling**: Set the request rate limit to comply with API quotas.

## Workflow Example

1.  **Launch the App**: Run `amapGeocode::amap_gui()`.
2.  **Configure API Key**: Go to the **Settings** tab and verify your API key is present.
3.  **Perform Task**: 
    *   Navigate to the **Geocoding** tab.
    *   Select "Batch File (CSV)" mode.
    *   Upload your `addresses.csv`.
    *   Select the column name that contains your addresses.
    *   Click **Batch Process**.
4.  **Download Results**: Once processing is complete, a "Download Results" button will appear. Click it to save the geocoded data to your local machine.

## Dependencies

The GUI requires the following additional R packages:
*   `shiny`
*   `bslib` (for the modern UI theme)
*   `DT` (for interactive data tables)
*   `readr` (for fast file I/O)

The app will check for these packages on startup and prompt you to install them if they are missing.
