Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne]Mapka Google w cmsie
Forum PHP.pl > Forum > Przedszkole
XP'ek
Witam,

wymyśliłem sobie portal dla fanów jednośladów smile.gif i teraz chciałem by w zakładce imprez mapka google zaznaczała pozycję imprezy na podstawie wpisanych danych do bazy ulicy i miejscowości i na nich podstawie generacja była mapki.
r4xz
Google Maps API?
XP'ek
API na podstawie nazw tworzy a nie współrzędnych geograficznych ? bo to chodzi by od razu na mapce zaznaczało punkt mamy mapke np. warszawa ulica X i pod numerem 5 jest akurat impreza smile.gif
thek
Może tworzyć na podstawie współrzędnych lub adresu. W tym drugim wypadku używasz geokodowania. Podajesz adres do google, a on zwraca Ci współrzędne adresu (o ile znajdzie wink.gif ).
XP'ek
masz to gdzieś bardziej wytłumaczone jak to zrobić ?
thek
Google udostępnia to API wraz z dokumentacją. Tak trudno odwiedzić ich stronę? smile.gif
http://code.google.com/intl/pl-PL/apis/map...ding/index.html
XP'ek
wybacz ale nie mogę Tego pojąć jak to zrobić nie mam pojęcia po prostu zrobić pokazywanie na mapce danego rejonu mi się udało ale zaznaczanie pinezką miejsca nie wychodzi mi ;//
JoShiMa
Widzę, że panowie zorientowani. Możecie mi coś podpowiedzieć (ciężko mi się brnie przez opisy funkcji)? Wiadomo, że można w GM wyświetlić punkty zebrane np w bazie danych. Można też zaznaczyć obszar wielokątny. A jak zrobić, żeby wyświetlić tylko te punkty, które mieszczą się w zaznaczonym obszarze?
thek
Trzeba określić współrzędne rogów znaczących. Przekazać do mapy można wszystkie punkty (w razie przewijania mapy się pokażą, co jest moim zdaniem lepszym rozwiązaniem), ale ograniczyć obszar startowy zamiast kombinować z obliczaniem setCenter, można poprzez zakres i Bounds. Wtedy zależnie od wersji wybierasz markery i na podstawie ich współrzędnych "rozszerzasz zakres" Ładnie jest to wytłumaczone na stackoverflow dla APIv3. Myślę, że ten link Ci wiele wytłumaczy smile.gif
http://stackoverflow.com/questions/1556921...unds-and-center
JoShiMa
Dzięki za podpowiedź. Mam nadzieję, że coś z tego zrozumiem. Tylko cvo masz na myśli pisząc o rogach znaczących?
thek
W APIv2 podaje się zakres jako prostokąt zawarty między lewym górnym i prawym dolnym rogiem, bowiem te dwa punkty wyznaczają wszystkie konieczne południki i równoleżniki do jego utworzenia. Dlatego też nazwałem je znaczącymi. Jeśli więc przechowujesz punkty markerów to spośród interesujących Cię wyznacz te z największą i najmniejszą długością oraz szerokością geograficzną. Tak uzyskane skrajne wartości posłużą Ci do wyznaczenia w wersji APIv2 współrzędnych punktów przekazanych do metody wyznaczającej zakres widoczności. Google na ich podstawie sama wyznacza sobie już środek i zoom mapy dopasowując do wielkości kontenera.

W APIv3, co widać w kodzie z mojego posta wyżej wygląda to nieco inaczej.
1. Tworzysz obiekt zakresu -> var bounds = new google.maps.LatLngBounds();
2. Bierzesz współrzędne punktu i przekazujesz je do zakresu -> bounds.extend(myLatLng);
3. Aktualizujesz mapę -> map.fitBounds(bounds);
4. Postępujesz tak dla każdego punktu.
Na razie pracowałem tylko z pojedynczymi na v3 i masą za jednym zamachem na v2, więc nie wiem, czy dla v3 krok 3 nie może być na samym końcu wywołany tylko raz, czy może jednak musi być wielokrotnie, za każdym dodaniem punktu poprzez extend. Optymalniej byłoby tylko raz, po uaktualnieniu punktów wszystkich, ale naprawdę nie testowałem tego nigdy. Bo i nie miałem potrzeby umieszczać więcej niż 1 punkt na mapie. Tam gdzie umieszczam ich nawet kilkaset, działa póki co v2
JoShiMa
Cytat(thek @ 3.04.2011, 01:29:59 ) *
2. Bierzesz współrzędne punktu i przekazujesz je do zakresu -> bounds.extend(myLatLng);


Masz na myśli punkt wyznaczający obszar?
thek
W APIv3 wystarczy, że w ten sposób będziesz podawać współrzędne punktów jakie miały by się w tym zakresie znaleźć. API samo sobie znajdzie zakres w takim wypadku. Coś na zasadzie "wrzucam punkty do obiektu zakresu, Ty API znajdź skrajne wartości południków i równoleżników, a potem sam wyznacz skrajne wartości i dopasuj zoom".
JoShiMa
Wszystko super, ale nie bardzo nadal wiem jak mam swój wielokąt przetłumaczyć na tablicę coord. Ten wielokąt definiuje user klikając na mapie, więc jakio wierzchołki mam lat i lng. Ja następnie obliczam prostokąt opisany na tym wielokącie i pobieram ajaxem z bazy tylko punkty z tego prostokąta, ale na mapie chcę mieć wyświetlone tylko punkty, które mieszczą się wewnątrz wyznaczonego wielokąta. No i nadal nie wiem jak to zrobić.
thek
To aż z takim określaniem dokładnym niestety nie majstrowałem. Zawsze wystarczało mi jedynie wrzucanie do prostokąta, a nie wielokąta. Jeśli dobrze Cię rozumiem, to chyba Ci chodzi o zamianę struktury Bounds na Polygon, tyle że google API nie ma dla Polygon czegoś takiego jak metoda contains. Nie załamuj jednak rąk i zajrzyj do google wpisując:

points inside polygon google api

A ujrzysz linki, które wprost pokazują gotowce:

http://appdelegateinc.com/blog/2010/05/16/...lygon-checking/
http://stackoverflow.com/questions/3036408...ing-google-maps

Google zawsze mi pomagał i jak widać zna odpowiedzi na wiele pytań niewypowiedzianych wink.gif
JoShiMa
Cytat(thek @ 27.05.2011, 13:32:00 ) *
Google zawsze mi pomagał i jak widać zna odpowiedzi na wiele pytań niewypowiedzianych wink.gif

Tak to prawda. Trzeba mieć tylko pomysł jak te pytania wypowiedzieć smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.