Рефактор

This commit is contained in:
sasha80
2024-09-06 10:07:55 +03:00
parent ff9bd42693
commit 77fecfa55c
6 changed files with 17 additions and 57 deletions

View File

@@ -1,14 +1,9 @@
@tool
extends CanvasGroup
class_name MercatorTileMap
## Отображение карт WEB Mercator
const MIN_ZOOM: float = 2.0
const MAX_ZOOM: float = 19.0
const TEST_COORDS: = [ Vector2(0, 0), Vector2(1, 0), Vector2(0, 1), Vector2(1, 1) ]
var test_coords_i: = 3
#http://10.1.1.220/osm_tiles/0/0/0.png
#https://tile.openstreetmap.org/{z}/{x}/{y}.png
@export var base_url: String = 'https://tile.openstreetmap.org/{z}/{x}/{y}.png':
@@ -23,7 +18,8 @@ var test_coords_i: = 3
@export var tile_height: float = 256.0
@export_range(1, 1000, 1) var max_concurrent_requests:int = 5
@export_range(100, 100000, 1) var max_cached_tiles: int = 200
@export_range(0, 25, 1) var max_zoom_level: int = 21
@export_range(0, 25, 1) var max_zoom_level: int = 19
@export_range(0, 25, 1) var min_zoom_level: int = 0
@export_color_no_alpha() var back_color: = Color.BLACK
@export var animation_time: float = 1.0
@@ -61,7 +57,7 @@ var test_coords_i: = 3
return _xyz.z
var _xyz: Vector3 = Vector3(0, 0, MIN_ZOOM)
var _xyz: Vector3 = Vector3(0, 0, min_zoom_level)
var _cache: Dictionary = {}
var _queue: Dictionary = {}
var _dragging: bool = false
@@ -218,7 +214,7 @@ func is_border_visible():
func multiply_zoom(multiplier: float, pivot: Vector2):
var p1: = screen_to_world(_xyz, pivot.x, pivot.y)
_xyz.z = clampf(_xyz.z * multiplier, MIN_ZOOM, MAX_ZOOM)
_xyz.z = clampf(_xyz.z * multiplier, min_zoom_level, max_zoom_level)
var p2: = screen_to_world(_xyz, pivot.x, pivot.y)
_xyz.x -= p2.x - p1.x
_xyz.y -= p2.y - p1.y
@@ -229,7 +225,7 @@ func set_zoom(zoom: float, pivot=null):
pivot = $canvas.size / 2.0
var p1: = screen_to_world(_xyz, pivot.x, pivot.y)
_xyz.z = clampf(zoom, MAX_ZOOM, MIN_ZOOM)
_xyz.z = clampf(zoom, max_zoom_level, min_zoom_level)
var p2: = screen_to_world(_xyz, pivot.x, pivot.y)
_xyz.x -= p2.x - p1.x
_xyz.y -= p2.y - p1.y
@@ -335,7 +331,7 @@ func _process(delta):
# result, response_code, headers, body
func _response(result, code, headers: Array, body: PackedByteArray, req, tile: Tile):
func _response(result, code, _headers: Array, body: PackedByteArray, req, tile: Tile):
_req_count -= 1
remove_child(req)
@@ -635,7 +631,6 @@ func remove_closest_dot(screen_pos):
func find_at_screen_position(screen_pos: Vector2):
var closest_dot = null
var closest_l = null
var closest_distance = INF
for mark in _marks.values():
var dot_screen_pos = world_to_screen(mark.position.x, mark.position.y)

View File

@@ -6,6 +6,7 @@
[node name="tilemap" type="CanvasGroup" groups=["gui_items"]]
script = ExtResource("1_l64tp")
max_zoom_level = 21
az = 2.0
[node name="canvas" type="TextureRect" parent="." groups=["gui_items"]]