Skip to content

Commit 39b154a

Browse files
committed
Update Markdown files
1 parent 1e16b61 commit 39b154a

3 files changed

Lines changed: 45 additions & 28 deletions

File tree

README.md

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Add to your `build.gradle.kts`:
1414

1515
```kotlin
1616
dependencies {
17-
implementation("de.afarber:openmapview:0.6.0")
17+
implementation("de.afarber:openmapview:0.7.0")
1818
}
1919
```
2020

@@ -23,9 +23,14 @@ The library is available on [Maven Central](https://central.sonatype.com/artifac
2323
## Features
2424

2525
- Drop-in compatible with Google `MapView` (non-deprecated methods only)
26-
- Lightweight, pure Kotlin implementation
27-
- OSM tiles via standard APIs
28-
- Smooth camera animations with customizable durations
26+
- Lightweight, pure Kotlin implementation with zero Google dependencies
27+
- OSM tiles via standard APIs (free, no API keys required)
28+
- Smooth camera animations with customizable durations and callbacks
29+
- 7 overlay types: Markers, Polylines, Polygons, Circles, Ground Overlays, Tile Overlays, Info Windows
30+
- 5 map types: Normal (OSM), Terrain (OpenTopoMap), Humanitarian, Cycle, None
31+
- Built-in zoom controls (+/- buttons) via UiSettings
32+
- External app integration (open in Google Maps, OsmAnd, etc. via geo: URI)
33+
- GeoJSON import support
2934
- Extensible marker, overlay, and gesture handling
3035
- MIT licensed (use freely in commercial apps)
3136

@@ -40,17 +45,17 @@ The documentation is automatically generated from KDoc comments and updated with
4045
Explore the example applications to see OpenMapView in action:
4146

4247
- [Example01Pan](examples/Example01Pan) - Basic map panning with touch gestures
43-
- [Example02Zoom](examples/Example02Zoom) - Zoom controls and pinch-to-zoom
44-
- [Example03Markers](examples/Example03Markers) - Marker overlays with custom icons
45-
- [Example04Polylines](examples/Example04Polylines) - Polylines, polygons, and polygons with holes
46-
- [Example05Camera](examples/Example05Camera) - Camera animations with callbacks
47-
- [Example06Clicks](examples/Example06Clicks) - Map click and long-click listeners
48+
- [Example02Zoom](examples/Example02Zoom) - Built-in zoom controls (+/- buttons) and zoom level display
49+
- [Example03Markers](examples/Example03Markers) - Marker overlays with custom colors and info windows
50+
- [Example04Polylines](examples/Example04Polylines) - Polylines, polygons, and polygons with holes (donut shapes)
51+
- [Example05Camera](examples/Example05Camera) - Camera animations with callbacks, custom durations, and built-in zoom controls
52+
- [Example06Clicks](examples/Example06Clicks) - Map click and long-click listeners with coordinate display
4853
- [Example07DraggableMarkers](examples/Example07DraggableMarkers) - Draggable markers with drag event listeners
49-
- [Example08Circles](examples/Example08Circles) - Circles with various radii, styling, and z-index ordering
50-
- [Example09Overlays](examples/Example09Overlays) - Tile overlays with transparency control (OpenSeaMap, OpenRailwayMap, Hiking Trails, OpenSnowMap)
54+
- [Example08Circles](examples/Example08Circles) - Circles with radius, styling, z-index ordering, and click listeners
55+
- [Example09Overlays](examples/Example09Overlays) - Tile overlays with transparency control (OpenSeaMap, Railways, Trails, Snow)
5156
- [Example10GroundOverlays](examples/Example10GroundOverlays) - Ground overlays with position/bounds modes, rotation, and transparency
52-
- [Example11MapTypes](examples/Example11MapTypes) - Switching between map types (Normal, Terrain, Humanitarian, Cycle)
53-
- [Example12Toolbar](examples/Example12Toolbar) - Open location in external map apps (geo intent with browser fallback)
57+
- [Example11MapTypes](examples/Example11MapTypes) - Switching between 5 map types (Normal, Terrain, Humanitarian, Cycle, None)
58+
- [Example12Toolbar](examples/Example12Toolbar) - Open location in external map apps via geo: URI with OpenStreetMap browser fallback
5459

5560
![Example05Camera Demo](examples/Example05Camera/screenshot.gif)
5661

docs/PUBLIC_API.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -273,20 +273,22 @@ This method is an OpenMapView-specific feature not present in Google Maps API. S
273273

274274
**Core Functionality Coverage:**
275275

276-
- Camera control: 100% (animateCamera, moveCamera, stopAnimation, getCameraPosition, setPadding)
277-
- Markers: 100% (addMarker, click listener, drag support, visibility, alpha)
278-
- Vector shapes: 100% (polylines, polygons with holes, circles, visibility)
279-
- Ground overlays: 100% (position/bounds modes, bearing, transparency, click listener)
280-
- Tile overlays: 100% (custom tile providers, transparency, z-index, visibility)
281-
- Map interaction: 100% (click listeners, long-click, projection API)
282-
- Zoom control: 100% (min/max zoom preferences, getZoom)
276+
- Camera control: 100% (animateCamera, moveCamera, stopAnimation, getCameraPosition, setPadding, zoom constraints)
277+
- Markers: 100% (addMarker, click listener, drag support, visibility, alpha, info windows, custom icons)
278+
- Vector shapes: 100% (polylines, polygons with holes, circles, visibility, click listeners, z-index)
279+
- Ground overlays: 100% (position/bounds modes, rotation, transparency, click listener)
280+
- Tile overlays: 100% (custom tile providers, transparency, z-index, visibility, predefined OSM providers)
281+
- Map interaction: 100% (click listeners, long-click, projection API, visible region)
282+
- Zoom control: 100% (min/max zoom preferences, getZoom, built-in zoom controls)
283+
- Map types: 100% (5 types: NONE, NORMAL, TERRAIN, HUMANITARIAN, CYCLE)
283284
- UI Settings: 100% of applicable methods (gesture controls, zoom controls, scroll-during-zoom)
284285
- Lifecycle management: 75% (onResume, onPause, onDestroy)
285286

286287
**OpenMapView-Specific Features:**
287288
In addition to Google Maps API compatibility, OpenMapView provides:
288-
- GeoJSON import (addGeoJson)
289-
- External map integration (openInExternalApp) - opens location in external map apps or browser
289+
- GeoJSON import (addGeoJson) - supports Point, LineString, Polygon, Multi* variants, FeatureCollection
290+
- External map integration (openInExternalApp) - opens location in external map apps via geo: URI with OpenStreetMap browser fallback
291+
- Built-in zoom controls (UiSettings.isZoomControlsEnabled) - circular +/- buttons rendered automatically
290292

291293
**Focus Areas:**
292294
OpenMapView prioritizes lightweight, essential mapping features for applications that need basic map display, markers, shapes, and camera animations without the complexity and overhead of Google Play Services.

docs/TESTING_UNIT.md

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,31 @@ The `--continue` flag ensures all tests run even if some fail, useful for gettin
5050

5151
## Test Structure
5252

53-
### Current Test Coverage (107 tests)
53+
### Current Test Coverage (260+ tests across 21 test classes)
5454

5555
| Test Class | Tests | Description |
5656
|------------|-------|-------------|
5757
| **AttributionOverlayTest** | 4 | Attribution rendering and touch detection |
58-
| **BitmapDescriptorFactoryTest** | 7 | Marker icon generation with colors |
58+
| **BitmapDescriptorFactoryTest** | 18 | Marker icon generation with colors and custom images |
59+
| **CameraPositionTest** | 6 | Camera position validation and equality |
60+
| **CameraUpdateFactoryTest** | 8 | Camera update creation (zoom, pan, position) |
5961
| **DiskTileCacheTest** | 4 | Persistent disk cache with DiskLruCache |
60-
| **MapControllerTest** | 40 | Zoom, pan, marker/polyline/polygon management, touch detection |
61-
| **MarkerTest** | 8 | Marker creation, equality, and properties |
62-
| **PolygonTest** | 12 | Polygon creation, validation, holes, and styling |
63-
| **PolylineTest** | 10 | Polyline creation, validation, and styling |
62+
| **GeoJsonParserTest** | 14 | GeoJSON parsing (Point, LineString, Polygon, Multi*, Features) |
63+
| **IntentUtilsTest** | 4 | External app integration (geo: URI, OSM fallback) |
64+
| **LatLngBoundsTest** | 13 | Lat/lng bounds calculations and contains checks |
65+
| **MapControllerTest** | 63 | Zoom, pan, marker/polyline/polygon/circle management, touch detection, padding |
66+
| **MapFeaturesTest** | 4 | Feature query methods (traffic, indoor, buildings, myLocation) |
67+
| **MapTypeTest** | 9 | Map type switching and validation |
68+
| **MarkerTest** | 24 | Marker creation, equality, properties, info windows, dragging |
69+
| **PolygonTest** | 16 | Polygon creation, validation, holes, and styling |
70+
| **PolylineTest** | 16 | Polyline creation, validation, and styling |
6471
| **ProjectionTest** | 12 | Web Mercator projection calculations |
6572
| **TileCacheTest** | 6 | Memory LRU cache behavior |
6673
| **TileDownloaderTest** | 2 | HTTP tile downloading with mocked Ktor client |
74+
| **TileSourceTest** | 7 | Tile source URL generation and attribution |
75+
| **UiSettingsTest** | 19 | UI settings (gestures, zoom controls, not-implemented features) |
6776
| **ViewportCalculatorTest** | 10 | Visible tile calculation |
77+
| **VisibleRegionTest** | 4 | Visible region bounds and corners |
6878

6979
### Example Test
7080

0 commit comments

Comments
 (0)