kakao_maps_flutter 0.0.1-beta1
kakao_maps_flutter: ^0.0.1-beta1 copied to clipboard
KakaoMaps SDK v2 for Flutter
kakao_maps_flutter #
A Flutter plugin for integrating Kakao Maps SDK v2, providing a native map experience for both Android and iOS platforms.
π± Platform Support #
| Feature | Android | iOS |
|---|---|---|
| Camera Controls | β | β |
| Marker Management | β | β |
| POI Controls | β | β |
| Coordinate Conversion | β | β |
| Map Information | β | β |
Features #
πΊοΈ Core Map Features #
- Native map view integration for Android and iOS
- Zoom level control (1-21)
- Camera position and movement control
- Map center point retrieval
- Map information (zoom, rotation, tilt)
- Viewport bounds management
π Marker Management #
- Add/remove individual markers
- Batch operations for multiple markers
- Custom marker images support (base64 encoded)
- Clear all markers functionality
π’ POI (Points of Interest) Controls #
- Toggle POI visibility
- Toggle POI clickability
- Adjustable POI scale levels:
- Small (0)
- Regular (1)
- Large (2)
- XLarge (3)
π₯ Camera Controls #
- Animated camera movements
- Custom animation duration
- Auto elevation support
- Consecutive movement control
- Tilt and rotation adjustments
π Coordinate Conversion #
- Convert between map coordinates (LatLng) and screen points
- Support for viewport bounds calculation
- Map padding adjustment
Getting Started #
Prerequisites #
- Obtain a Kakao Maps API key from the Kakao Developers Console
- Configure your project for Kakao Maps SDK (see platform-specific setup below)
Installation #
Add to your pubspec.yaml:
dependencies:
kakao_maps_flutter: ^latest_version
Basic Usage #
- Initialize the SDK:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await KakaoMapsFlutter.init('YOUR_API_KEY');
runApp(const MyApp());
}
- Add a map to your widget:
class MapScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: KakaoMap(
onMapCreated: (controller) {
// Store controller for map operations
},
),
);
}
}
Map Operations #
- Camera Movement:
await controller.moveCamera(
cameraUpdate: CameraUpdate.fromLatLng(
LatLng(latitude: 37.5665, longitude: 126.9780),
),
animation: const CameraAnimation(
duration: 1500,
autoElevation: true,
isConsecutive: false,
),
);
- Marker Management:
// Add a marker
await controller.addMarker(
labelOption: LabelOption(
id: 'marker_id',
latLng: LatLng(latitude: 37.5665, longitude: 126.9780),
base64EncodedImage: 'your_base64_image',
),
);
// Remove a marker
await controller.removeMarker(id: 'marker_id');
- POI Controls:
// Toggle POI visibility
await controller.setPoiVisible(isVisible: true);
// Set POI scale
await controller.setPoiScale(scale: 1); // Regular size
- Map Information:
// Get current map info
final mapInfo = await controller.getMapInfo();
print('Zoom: ${mapInfo?.zoomLevel}');
print('Rotation: ${mapInfo?.rotation}Β°');
print('Tilt: ${mapInfo?.tilt}Β°');
Platform-Specific Setup #
No platform-specific setup required
Future Plans #
Upcoming Features #
-
Map Events and Callbacks
- Touch events
- POI click events
- Camera movement events
- Marker click events
-
Advanced Marker Features
- Custom marker views
- Marker clustering
- Marker animations
- InfoWindow customization
-
Polyline and Polygon Support
- Draw paths and regions
- Customize styles
- Interactive editing
-
Local Search Integration
- POI search
- Address search
- Reverse geocoding
-
Advanced Map Features
- Custom map styles
- Indoor maps
- 3D building display
- Traffic information
-
Performance Optimizations
- Marker rendering optimization
- Memory management improvements
- Caching mechanisms
Contributing #
Contributions are welcome! Please read our contributing guidelines before submitting pull requests.
License #
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments #
- Thanks to Kakao for providing the Maps SDK
- Special thanks to all contributors