Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[php] Карта на подобии google maps
#1
Делаю интерактивную карту с выводом игроков, нпц, мобов, боссов и прочей фигни. В общем, столкнулся с проблемой, не могу нормально вывести полученные координаты объектов на самой карте. Допустим игроков...всё выводится в верхнем левом углу карты.

Логика вывода такая

$valx; // координата x из базы
$valy; // координата y из базы
$w = 4194; //ширина картинки, на которую выводится объект
$name; //имя объекта

PHP код:
<?php 
$x
= ($valx/(32768*16/$w));
$y = ($valy/(32768*16/$w));
echo
"<div style=\"position: absolute; top: ".round($y)."px; left: ".round($x)."px\"><img src=mark.png alt='$name'></div>";

Может я что-то не так делаю, все объекты как бы уезжают в левый верхний угол. Может я вообще не по той формуле считаю?

ЗЫ Карта под HF+
Ответ
#2
размашления

ты просто на экран выведи полученные цифры и глянь. формула мне, например, не нравится. С каким масштабом у тебя картинка локации сделана к оригиналу?
Ответ
#3
Картинка та, которая показывается игрокам в радаре, с клиента взял.

Хорошо, тогда по вашему какая должна быть формула?

проблема наверное в том, что координаты 0 0 в л2 находятся посредине карты, а не в верхнем левом углу, вот как-то надо сделать так, чтоб координаты 0 0 выводились посрединке картинки.

Пересмотрел пару подобных, никак не могу понять принцып
Ответ
#4
перво-наперво, формула должна учитывать масштаб этой картинки, она явно меньше реального размера, второе, если координаты идут от центра, то есть, х и у могут быть отрицательными, я так думаю. Вариант сместить и поставить тем же ксс по центру исходную точку и к тем координатам прибавлять получившиеся х и у с учетом масштаба не рассматривали?

UPD, думаю следует найти какое расстояние помещается в 1 пиксель картинки, это касаемо масштаба.
Ответ
#5
ну так это учитывается в $w

Говорю же смотрел другие примеры, там вообще сухие цифры, не понятно откуда они берутся вообще
Ответ
#6
значит, у тебя есть все данные. проводи брейн шторм.
Ответ
#7
Человек просто обязан ошибаться, раз другие учатся на его ошибках .......
Ответ
#8
я это уже смотрел...не понятно откуда берутся эти цифры

$data['x']=($x + 130000) / 3600;
$data['y']=($y + 0) / 5250;

130000
3600
5250
Ответ
#9
как-то так
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)