Доработка. Центрирование карты по текущим координатам
This commit is contained in:
@@ -23,6 +23,8 @@ class_name MercatorTileMap
|
||||
@export_color_no_alpha() var back_color: = Color.BLACK
|
||||
@export var animation_time: float = 1.0
|
||||
const default_size: = 400.0
|
||||
var is_centered: = false
|
||||
|
||||
|
||||
@export var size: Vector2i = Vector2i(default_size, default_size):
|
||||
set(v):
|
||||
@@ -105,9 +107,17 @@ func _ready():
|
||||
var key = settings.get_unit_key('навигация')
|
||||
var unit_nav = network.units[key]
|
||||
unit_nav.connect('data_received', on_data_received)
|
||||
signaller.conn(signaller.map_centered, on_map_centered)
|
||||
|
||||
|
||||
func on_map_centered(toggle_centered: bool):
|
||||
is_centered = toggle_centered
|
||||
print_debug(is_centered)
|
||||
|
||||
|
||||
func on_data_received(coords: Dictionary):
|
||||
if not is_centered:
|
||||
return
|
||||
if coords.has_all(['latitude', 'longitude']):
|
||||
set_coordinates(coords['longitude'], coords['latitude'])
|
||||
|
||||
@@ -197,6 +207,8 @@ func _input(e):
|
||||
_xyz.x += diff.x
|
||||
_xyz.y += diff.y
|
||||
queue_redraw()
|
||||
if diff.length() > 0:
|
||||
signaller.emmit(signaller.map_user_panning)
|
||||
|
||||
|
||||
## Возвращает true, если видна область за краем карты
|
||||
|
||||
@@ -131,10 +131,15 @@ func _ready():
|
||||
interfer.connect('interfer_update', Callable(self, 'on_interfer_new'))
|
||||
signaller.connect('interfer_prinuditelno', Callable(self, 'on_chk_interfer_prinuditelno'))
|
||||
signaller.connect('fs_update_state', Callable(self, 'on_fs_update_state'))
|
||||
on_btn_center_toggled(false)
|
||||
signaller.connect('map_user_panning', Callable(self, 'on_user_panning'))
|
||||
on_btn_center_toggled(true)
|
||||
on_btn_activate_toggled(false)
|
||||
|
||||
|
||||
func on_user_panning():
|
||||
$btn_center.button_pressed = false
|
||||
|
||||
|
||||
func on_chk_interfer_prinuditelno(_interfer_sectors):
|
||||
$chk_auto.set_pressed_no_signal(false)
|
||||
on_value_changed(false)
|
||||
@@ -517,6 +522,7 @@ func on_fs_update_state(_fs_dict: Dictionary):
|
||||
|
||||
func on_btn_center_toggled(toggled_on: bool) -> void:
|
||||
$btn_center.tooltip_text = 'Центрирует карту на текущие координаты (%s)' % ('включено' if toggled_on else 'отключено')
|
||||
signaller.emit_signal('map_centered', toggled_on)
|
||||
|
||||
|
||||
func on_btn_activate_toggled(toggled_on: bool) -> void:
|
||||
|
||||
@@ -133,13 +133,19 @@ signal interfer_selected(ecm: interfer.Interfer)
|
||||
signal fs_selected(ecm: interfer.Interfer)
|
||||
|
||||
|
||||
## Вызывается при изменении координат карты.[br]
|
||||
## Вызывается при смещении карты пользователем.[br]
|
||||
## [param lan], [param lat] - Вновь установленные координаты.
|
||||
signal map_coords_changed(lan: float, lat: float)
|
||||
signal map_user_panning()
|
||||
|
||||
|
||||
## Вызывается при изменении режима центрирования карты.[br]
|
||||
## [param is_centered] - Карта центрирована по текущим координатам ([b]true[/b]
|
||||
## - да, [b]false[/b] - нет)
|
||||
signal map_centered(is_centered: bool)
|
||||
|
||||
|
||||
## Вызывается при изменении размера изображения для отображения карты.[br]
|
||||
## [param mode] - Вновь установленный режим.
|
||||
## [param mode] - Вновь установленный режим/
|
||||
signal map_mode_changed(mode: int)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user