To add a location search UI component to your `AMLMapView`, you will add an `AMLSearchBar` to your View in your desired layout. Upon searching, `Geo.Place`s are converted to `MGLPointFeature`s using `AmplifyMapLibre.createFeatures(places)`. Lastly assign those converted `MGLPointFeature`s to `mapState.features`.
Alternatively, you can leverage the `AMLMapCompositeView` directly, which includes an `AMLSearchBar` among other pre-configured UI components.

```swift
import SwiftUI
import AmplifyMapLibreUI
import AmplifyMapLibreAdapter
import Amplify

struct MyMapView: View {

    @StateObject private var mapState = AMLMapViewState()
    @State private var searchText = ""
    @State private var displayState: AMLSearchBar.DisplayState = .map

    var body: some View {
        ZStack(alignment: .top) {
            AMLMapView(mapState: mapState)
                .edgesIgnoringSafeArea(.all)

            AMLSearchBar(
                text: $searchText,
                displayState: $displayState,
                onEditing: { },
                onCommit: search,
                onCancel: { mapState.features = [] }
            )
            .padding()
        }
    }

    private func search() {
        let searchArea = Geo.SearchArea.near(mapState.center)
        let searchOptions = Geo.SearchForTextOptions(area: searchArea)
        Task {
            do {
                let places = try await Amplify.Geo.search(for: searchText, options: searchOptions)
                await MainActor.run {
                    self.mapState.features = AmplifyMapLibre.createFeatures(places)
                }
            } catch let error as Geo.Error {
                print("Failed to search: \(error)")
            } catch {
                print("Unexpected error: \(error)")
            }
        }
    }
}
```

![AMLMapView with AMLSearchBar](/images/ios-geocoder-search-box-map.png)

### Customize Feature Icons

You can customize the feature images displayed on the `AMLMapView` or `AMLMapCompositeView`, you can leverage the `featureImage()` view modifier.
<!-- // spell-checker: disable -->
```swift
    var body: some View {
        AMLMapView(mapState: mapState)
            .featureImage {
                let image = UIImage(
                    systemName: "paperplane.circle.fill",
                    withConfiguration: UIImage.SymbolConfiguration(
                        font: .systemFont(ofSize: 22, weight: .medium)
                    )
                )!
                return image
             }
            .edgesIgnoringSafeArea(.all)
    }
```
<!-- // spell-checker: enable -->
![AMLMapView featureImage view modifier](/images/ios-geocoder-custom-images.png)
