✨ MAJOR FEATURES: • Auto-zoom intelligence với smart bounds fitting • Enhanced 3D GPS markers với pulsing effects • Professional route display với 6-layer rendering • Status-based parking icons với availability indicators • Production-ready build optimizations 🗺️ AUTO-ZOOM FEATURES: • Smart bounds fitting cho GPS + selected parking • Adaptive padding (50px) cho visual balance • Max zoom control (level 16) để tránh quá gần • Dynamic centering khi không có selection 🎨 ENHANCED VISUALS: • 3D GPS marker với multi-layer pulse effects • Advanced parking icons với status colors • Selection highlighting với animation • Dimming system cho non-selected items 🛣️ ROUTE SYSTEM: • OpenRouteService API integration • Multi-layer route rendering (glow, shadow, main, animated) • Real-time distance & duration calculation • Visual route info trong popup 📱 PRODUCTION READY: • SSR safe với dynamic imports • Build errors resolved • Global deployment via Vercel • Optimized performance 🌍 DEPLOYMENT: • Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app • Bundle size: 22.8 kB optimized • Global CDN distribution • HTTPS enabled 💾 VERSION CONTROL: • MapView-v2.0.tsx backup created • MAPVIEW_VERSIONS.md documentation • Full version history tracking
355 lines
8.9 KiB
JSON
355 lines
8.9 KiB
JSON
{
|
|
"mjolnir": {
|
|
"tile_dir": "/data/valhalla",
|
|
"admin": "/data/valhalla/admin.sqlite",
|
|
"timezone": "/data/valhalla/tz_world.sqlite",
|
|
"max_cache_size": 1000000000,
|
|
"global_synchronized_cache": false,
|
|
"tile_extract": "/data/valhalla/tiles.tar",
|
|
"logging": {
|
|
"type": "std_out",
|
|
"color": true,
|
|
"level": "INFO"
|
|
}
|
|
},
|
|
"loki": {
|
|
"actions": ["locate", "route", "height", "sources_to_targets", "optimized_route", "isochrone", "trace_route", "trace_attributes", "expansion"],
|
|
"logging": {
|
|
"type": "std_out",
|
|
"color": true,
|
|
"level": "INFO"
|
|
},
|
|
"service_defaults": {
|
|
"minimum_reachability": 50,
|
|
"radius": 0,
|
|
"search_cutoff": 35000,
|
|
"node_snap_tolerance": 5,
|
|
"street_side_tolerance": 5,
|
|
"street_side_max_distance": 1000,
|
|
"heading_tolerance": 60
|
|
}
|
|
},
|
|
"thor": {
|
|
"logging": {
|
|
"type": "std_out",
|
|
"color": true,
|
|
"level": "INFO"
|
|
},
|
|
"source_to_target_algorithm": "select_optimal"
|
|
},
|
|
"odin": {
|
|
"logging": {
|
|
"type": "std_out",
|
|
"color": true,
|
|
"level": "INFO"
|
|
}
|
|
},
|
|
"meili": {
|
|
"customizable": ["turn_penalty_factor", "max_route_distance_factor", "max_route_time_factor"],
|
|
"mode": "auto",
|
|
"grid": {
|
|
"cache_size": 100240,
|
|
"size": 500
|
|
},
|
|
"default": {
|
|
"sigma_z": 4.07,
|
|
"gps_accuracy": 5.0,
|
|
"beta": 3,
|
|
"max_route_distance_factor": 5,
|
|
"max_route_time_factor": 5,
|
|
"breakage_distance": 2000,
|
|
"max_search_radius": 100,
|
|
"interpolation_distance": 10,
|
|
"search_radius": 15.0,
|
|
"max_candidates": 8,
|
|
"turn_penalty_factor": 0
|
|
},
|
|
"auto": {
|
|
"turn_penalty_factor": 200,
|
|
"search_radius": 15
|
|
},
|
|
"pedestrian": {
|
|
"turn_penalty_factor": 100,
|
|
"search_radius": 25
|
|
},
|
|
"bicycle": {
|
|
"turn_penalty_factor": 140
|
|
},
|
|
"logging": {
|
|
"type": "std_out",
|
|
"color": true,
|
|
"level": "INFO"
|
|
}
|
|
},
|
|
"httpd": {
|
|
"service": {
|
|
"listen": "0.0.0.0:8002",
|
|
"loopback": "0.0.0.0:8002",
|
|
"interrupt": "ipc:///tmp/interrupt"
|
|
}
|
|
},
|
|
"statsd": {
|
|
"host": "localhost",
|
|
"port": 8125,
|
|
"prefix": "valhalla"
|
|
},
|
|
"service_limits": {
|
|
"auto": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 20,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"auto_shorter": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 20,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"bicycle": {
|
|
"max_distance": 500000.0,
|
|
"max_locations": 50,
|
|
"max_matrix_distance": 200000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"bus": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 50,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"hov": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 20,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"motorcycle": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 20,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"motor_scooter": {
|
|
"max_distance": 500000.0,
|
|
"max_locations": 50,
|
|
"max_matrix_distance": 200000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"pedestrian": {
|
|
"max_distance": 250000.0,
|
|
"max_locations": 50,
|
|
"min_transit_walking_distance": 1,
|
|
"max_transit_walking_distance": 10000,
|
|
"max_matrix_distance": 200000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"bikeshare": {
|
|
"max_distance": 500000.0,
|
|
"max_locations": 50,
|
|
"max_matrix_distance": 200000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"taxi": {
|
|
"max_distance": 5000000.0,
|
|
"max_locations": 20,
|
|
"max_matrix_distance": 400000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"max_avoid_locations": 128,
|
|
"max_reachability": 100,
|
|
"max_radius": 200,
|
|
"max_timedep_distance": 500000,
|
|
"max_alternates": 2,
|
|
"max_exclude_locations": 50,
|
|
"max_exclude_polygons_length": 10000,
|
|
"max_walkway_shape": 100000,
|
|
"skadi": {
|
|
"max_shape": 750000,
|
|
"min_resample": 10.0
|
|
},
|
|
"isochrone": {
|
|
"max_contours": 4,
|
|
"max_time_contour": 120,
|
|
"max_distance_contour": 25000,
|
|
"max_locations": 1
|
|
},
|
|
"trace": {
|
|
"max_distance": 200000.0,
|
|
"max_gps_accuracy": 100.0,
|
|
"max_search_radius": 100,
|
|
"max_shape": 16000,
|
|
"max_best_paths": 4,
|
|
"max_best_paths_shape": 100,
|
|
"max_alternates": 3,
|
|
"max_alternates_shape": 100
|
|
},
|
|
"transit": {
|
|
"max_distance": 500000.0,
|
|
"max_locations": 50,
|
|
"max_matrix_distance": 200000.0,
|
|
"max_matrix_location_pairs": 2500
|
|
},
|
|
"status": {
|
|
"allow_verbose": false
|
|
}
|
|
},
|
|
"costing_options": {
|
|
"auto": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.5,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.0,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0,
|
|
"include_hov2": false,
|
|
"include_hov3": false,
|
|
"include_hot": false
|
|
},
|
|
"auto_shorter": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.5,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.0,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0,
|
|
"include_hov2": false,
|
|
"include_hov3": false,
|
|
"include_hot": false
|
|
},
|
|
"motorcycle": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.5,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.8,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0
|
|
},
|
|
"bus": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.3,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.0,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0
|
|
},
|
|
"taxi": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.5,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.0,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0
|
|
},
|
|
"hov": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"toll_booth_cost": 15,
|
|
"toll_booth_penalty": 0,
|
|
"ferry_cost": 300,
|
|
"use_ferry": 0.5,
|
|
"use_highways": 1.0,
|
|
"use_tolls": 0.5,
|
|
"use_tracks": 0.0,
|
|
"use_living_streets": 0.25,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"private_access_factor": 9.0,
|
|
"exclude_unpaved": 1.0
|
|
},
|
|
"bicycle": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"use_ferry": 0.5,
|
|
"use_living_streets": 0.6,
|
|
"use_tracks": 0.85,
|
|
"cycling_speed": 25.0,
|
|
"use_roads": 0.5,
|
|
"use_hills": 0.5,
|
|
"avoid_bad_surfaces": 0.25
|
|
},
|
|
"pedestrian": {
|
|
"maneuver_penalty": 5,
|
|
"gate_cost": 30,
|
|
"gate_penalty": 300,
|
|
"private_access_penalty": 450,
|
|
"service_penalty": 15,
|
|
"service_factor": 1.0,
|
|
"closure_factor": 9.0,
|
|
"use_ferry": 1.0,
|
|
"use_living_streets": 0.6,
|
|
"use_tracks": 0.85,
|
|
"walking_speed": 5.1,
|
|
"walkway_factor": 1.0,
|
|
"sidewalk_factor": 1.0,
|
|
"alley_factor": 2.0,
|
|
"driveway_factor": 5.0,
|
|
"step_penalty": 0.0,
|
|
"max_hiking_difficulty": 6
|
|
}
|
|
}
|
|
}
|