Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][GD]Duża grafika (Mapa Świata)
Mike122
post 10.07.2007, 23:11:11
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


Witam posiadam dużą grafikę (Mapa Świata) 1501x751. I Chciałbym na niej umieścić punkty więc używam
imagefilledrectangle" title="Zobacz w manualu PHP" target="_manual i na przykład Wrocław to imagefilledrectangle($im,769, 239, 780, 250, $kolor); a jak zrobić żeby nie musiał ręcznie znajdować punktu biggrin.gif Bo np. będę chciał zaznaczyć coś w Chinach to trochę trudno wpisywać tak mniej więcej (strzelając). Jest jakiś sposób? A następnie później będę chciał połączyć te punkty używając ImageLine" title="Zobacz w manualu PHP" target="_manual. Proszę o pomoc jakieś porady lub coś smile.gif Pozdrawiam


--------------------

Największy błąd ze wszystkich błędów to nie słuchać dobrych rad. Nikt nie jest doskonały i nie należy się obrażać za konstruktywną krytykę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
piotrd
post 10.07.2007, 23:14:56
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 0
Dołączył: 16.05.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


przy takich małych rozmiarach mapy i tak każdy punk na mapie wygląda jakby był postawiony mniej więcej (strzelając). tak samo postaw punkcik orientacyjny w chinach.


--------------------
piotrd
Go to the top of the page
+Quote Post
Mike122
post 11.07.2007, 02:26:49
Post #3





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


Hmm a jak by zrobić tak wpisuję położenie geograficzne 51° 07' N 17° 02' E a skrypt oblicza że to 769, 239, czy na przykład 34°03''' N 118°14''' i obliczy położenie Los Angeles. Jak to robić oczekuję jakieś porady funkcje czy coś. Proszę o pomoc.

Ktoś mi powie jak policzyć szerokość i długość geograficzną bo robię tak.
  1. <?php
  2. $x = 1501/180; //Szerokość obrazka dzielę przez 180 stopni bo 90 *2;
  3. $x = 34.03 * $x; //Szerokość geograficzna Los Angeles razy 1 stopień z poprzedniego.
  4. $y = 751/360; //Długość obrazka dzielę przez 360 bo 180 *2;
  5. $y = 118.14 * $y; //Długość geograficzną Los Angeles razy 1 stopień z poprzedniego.
  6. imagefilledrectangle($im,$x, $y, $x+5, $y+5, $kolor);
  7. ?>

I liczy ale nie dobrze, bo z obliczeń tego wynika że Los Angeles znajduje się w Kanadzie.
Jak zrobić żeby liczyło poprawnie? Proszę o pomoc.

Ten post edytował Mike122 11.07.2007, 00:07:13


--------------------

Największy błąd ze wszystkich błędów to nie słuchać dobrych rad. Nikt nie jest doskonały i nie należy się obrażać za konstruktywną krytykę.
Go to the top of the page
+Quote Post
Cosi*
post 11.07.2007, 11:58:57
Post #4





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2007
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Zobacz sobie skrypt Mapa na mojej stronie (adres w stopce). Tam jest mapa Polski co prawda, ale odrobina wysiłku, parę obliczeń i masz mapę świata smile.gif


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post
Mike122
post 11.07.2007, 15:05:46
Post #5





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


~Cosi* dziękuje Ci znów duża podpowiedź z Twojej strony biggrin.gif Co prawda gotowy skrypt ale zbytnio nie wiem jak zastąpić w skrypcie:
  1. <?php
  2. $x = stopnie("34^03'");
  3. $y = stopnie("118^13'");
  4. $x = floor(1501 * ($x - stopnie("14^07'"))/(stopnie("24^09'") - stopnie("14^07'")));
  5. $y = floor(751 * (- ($y - stopnie("49^"))/(stopnie("54^50'") - stopnie("49^"))));
  6. ?>

Jakimi szerokościami zastąpić:
- 14^07';
- 24^09';
i wysokości:
- 49^;
54^50';
Jakieś podpowiedzi jak to policzyłeś sadsmiley02.gif


--------------------

Największy błąd ze wszystkich błędów to nie słuchać dobrych rad. Nikt nie jest doskonały i nie należy się obrażać za konstruktywną krytykę.
Go to the top of the page
+Quote Post
Cosi*
post 11.07.2007, 15:38:02
Post #6





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2007
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Pomyśl smile.gif
Świat ma 360 stopni wszerz i 180 stopni wzwyż. Te wartości w moim skrypcie to są - jak się pewnie domyśliłeś - skrajne punkty Polski. W Twoim przypadku granice to będzie pewnie +/- 180 stopni wszerz i +/- 90 stopni wzwyż (jeżeli używasz mapy w odwzorowaniu Mercatora).
W ogóle radzę Ci nie korzystać z całego skryptu, tylko wyciągnąć z niego przydatne funkcje (na pewno tą przekształcającą stopnie na piksele). No i wal jak będą problemy smile.gif


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post
Mike122
post 11.07.2007, 15:50:35
Post #7





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


Wyciągnąłem przydatne funkcje:] Czyli stopnie();
A próbowałem już rożnych metod z 360 i 180 dry.gif
  1. <?php
  2. $x = stopnie("34^03'");
  3. $y = stopnie("118^13'");
  4. $x = floor(1501 * ($x - stopnie("0^"))/(stopnie("90^") - stopnie("0^")));
  5. $y = floor(751 * (- ($y - stopnie("0^"))/(stopnie("180^") - stopnie("0^"))));
  6. imagefilledrectangle($im,$x, $y, $x+40, $y+40, $kolor);
  7. ?>


czy

  1. <?php
  2. $x = stopnie("34^03'");
  3. $y = stopnie("118^13'");
  4. $x = floor(1501 * ($x - stopnie("90^"))/(stopnie("180^") - stopnie("90^")));
  5. $y = floor(751 * (- ($y - stopnie("180^"))/(stopnie("360^") - stopnie("180^"))));
  6. imagefilledrectangle($im,$x, $y, $x+40, $y+40, $kolor);
  7. ?>


czy

  1. <?php
  2. $x = stopnie("34^03'");
  3. $y = stopnie("118^13'");
  4. $x = floor(1501 * ($x - stopnie("90^"))/(stopnie("180^") - stopnie("90^")));
  5. $y = floor(751 * (- ($y - stopnie("180^"))/(stopnie("360^") - stopnie("180^"))));
  6. imagefilledrectangle($im,$x, $y, $x+40, $y+40, $kolor);
  7. ?>

Ale coś źle robię ohmy.gif

Ten post edytował Mike122 11.07.2007, 16:18:15


--------------------

Największy błąd ze wszystkich błędów to nie słuchać dobrych rad. Nikt nie jest doskonały i nie należy się obrażać za konstruktywną krytykę.
Go to the top of the page
+Quote Post
Cosi*
post 11.07.2007, 17:05:42
Post #8





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2007
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Weź pod uwagę, że masz zakres od minus 180 do 180, czyli musisz "przesunąć" zakres o 180 stopni. Więcej Ci nie mogę podpowiedzieć, bo coś mi dzisiaj nie idzie skomplikowane myślenie winksmiley.jpg


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post
Mike122
post 12.07.2007, 01:13:21
Post #9





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 12.04.2006

Ostrzeżenie: (0%)
-----


Hmm jak by powiedzieć chyb jestem za bardzo ciemny.
~Cosi* kombinuję coś z tym ale ciągle źle wychodzi. blinksmiley.gif
Widać że geografia nie moją mocna strona dry.gif


--------------------

Największy błąd ze wszystkich błędów to nie słuchać dobrych rad. Nikt nie jest doskonały i nie należy się obrażać za konstruktywną krytykę.
Go to the top of the page
+Quote Post
Cosi*
post 12.07.2007, 09:44:39
Post #10





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 9.07.2007
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Hehe, ja też nie lubiłem geografii... Ale to jest matematyka smile.gif
Układasz sobie taką proporcję:
-180^ to 0px
180^ to 1501px
x^ to Xpx

czyli:
(X - 0) / (1501 - 0) = (x^ - (-180^)) / (180^ - (-180^))

i wychodzi nam:
X = 1501 * (x^ + 180^) / 360^

Voila. Teraz ułóż taką proporcję dla Y smile.gif


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 23:56