Рефактор
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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"]]
|
||||
|
||||
Reference in New Issue
Block a user