mapsforge_flutter_core
Core utilities and common components for the Mapsforge Flutter project.
Screenshots

See mapsforge_flutter for more details.
Overview
The mapsforge_flutter_core package provides essential building blocks and utilities used throughout the Mapsforge Flutter ecosystem. It contains fundamental data structures, algorithms, and interfaces for map rendering, geographic calculations, and data management.
Key Components
π Data Models
- Geographic Coordinates:
LatLong,BoundingBoxfor spatial data representation - Tile System:
Tileclass for hierarchical map tile management - Map Features:
Way,PointOfInterest,Tagfor map data structures - Data Bundles:
DatastoreBundlefor organizing map data collections
ποΈ Data Storage
- Abstract Datastore: Base interface for map data access
- Memory Datastore: In-memory implementation for testing and dynamic data
- Buffer Management: Efficient binary data reading and processing
π Geographic Projections
- Mercator Projection: Web Mercator (EPSG:3857) coordinate transformations
- Pixel Projection: Screen coordinate conversions for rendering
- Tile Calculations: Geographic to tile coordinate mappings
π οΈ Utilities
- Geographic Calculations: Distance, intersection, and spatial operations
- Line Simplification: Douglas-Peucker algorithm for polyline optimization
- Performance Tools: Timing utilities for debugging and profiling
- Settings Management: Global configuration for rendering parameters
Usage Examples
Working with Geographic Coordinates
import 'package:mapsforge_flutter_core/model.dart';
// Create a coordinate
final coordinate = LatLong(52.5200, 13.4050); // Berlin
// Create a bounding box
final bbox = BoundingBox(52.0, 13.0, 53.0, 14.0);
// Check if coordinate is within bounds
if (bbox.containsLatLong(coordinate)) {
print('Berlin is within the bounding box');
}
Using Projections
import 'package:mapsforge_flutter_core/projection.dart';
// Create a projection for zoom level 10
final projection = MercatorProjection.fromZoomlevel(10);
// Convert coordinates to tile numbers
final tileX = projection.longitudeToTileX(13.4050);
final tileY = projection.latitudeToTileY(52.5200);
// Create a tile
final tile = Tile(tileX, tileY, 10);
Memory Datastore for Testing
import 'package:mapsforge_flutter_core/datastore.dart';
import 'package:mapsforge_flutter_core/model.dart';
// Create an in-memory datastore
final datastore = MemoryDatastore();
// Add some test data
final poi = PointOfInterest(
position: LatLong(52.5200, 13.4050),
tags: [Tag('name', 'Berlin')],
);
datastore.addPoi(poi);
// Query data for a tile
final tile = Tile(550, 335, 10);
final data = await datastore.readMapDataSingle(tile);
Geographic Utilities
import 'package:mapsforge_flutter_core/utils.dart';
// Calculate distance between two points
final berlin = LatLong(52.5200, 13.4050);
final munich = LatLong(48.1351, 11.5820);
final distance = LatLongUtils.euclideanDistance(berlin, munich);
// Simplify a polyline
final simplifier = DouglasPeuckerLatLong();
final simplified = simplifier.simplify(coordinates, tolerance: 0.001);
License
This package is part of the Mapsforge Flutter project and follows the same licensing terms.
Libraries
- buffer
- Buffer utilities for reading and writing binary data.
- dart_isolate
- model
- Core data models for geographic and map-related data structures.
- projection
- Map projection utilities for coordinate transformations.
- task_queue
- utils
- Utility classes and helper functions for common operations.