Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js]Google API - maps
Tasilvar
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 13.12.2009
Skąd: Pyrzyce

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


Witam, podczas tworzenia aplikacji w oparciu o google api natknąłem się na problem związny z przejściem przez "warunek". W skórcie pisząc, mając aktualnie kod, (którego zadaniem jest pokazywanie współrzędnych punktu na mapie) :


Kod
//--------------------------------------------------------------------------------------------------------
//--- Google API Maps v2
//--------------------------------------------------------------------------------------------------------
//----------------------- po załadowaniu okna odpal funkcję pokaz_mape -----------------------------------
window.onload = pokaz_mape;
var api_maps;
var marker_default;
var punkt_x;
var punkt_y;
var zoom;
function pokaz_mape() {
//-------------------- sprawdzenie kompatybilności przeglądarki -------------------------------------------
if(GBrowserIsCompatible()) {
//------- zbudowanie kontrolek na mapie -------------------------------------------------------------------
api_maps = new GMap2(document.getElementById("mapform"));                                  
api_maps.addControl(new GLargeMapControl());                                              
api_maps.addControl(new GScaleControl());                                                  
//------- dodawnie alternatywnej ikony -------------------------------------------------------------------
var ikona = new GIcon();
ikona.image = "hospital.png";
ikona.iconAnchor = new GPoint(32, 32);                      
ikona.iconSize = new GSize(32,32);                          
//------- atrybuty punktów -------------------------------------------------------------------
var geo_x = parseFloat(53.14656827755494); geo_y = parseFloat(14.895411729812622);            
var tytul = "Przykładowy znacznik";                                                          
marker_default = new GMarker(new GLatLng(geo_x,geo_y),{title:tytul, icon:ikona});            
api_maps.addOverlay(marker_default);                                                        
//----- przesuwanie markeru po mapie -----------------------------------------------------------------
api_maps.setCenter(new GLatLng(geo_x, geo_y),15);
GEvent.addListener(api_maps,'click',function(marker_default,punkt) {                      
punkt_x = marker_default.getPoint().lng();                                                // te zmienne tj. punkt_x
punkt_y = marker_default.getPoint().lat();                                                // punkt_y
zoom = api_maps.getZoom();                                                               // oraz zoom
if(marker_default) {                                                                      
alert('g');  //działa, po kliknięciu pojawa się alert i współrzędne punktu

}
else if(punkt) {                                                                          
alert('h');   // w tym warunku w ogóle nie działają (czemu? nie wiem)
api_maps.clearOverlays();                                                              
var marker_default = new GMarker(punkt,{title:tytul, icon:ikona});                      
api_maps.addOverlay(marker_default);                                                    
}
//------ napis z parametrami geograficznymi ----------------------------------------------------------
var napis = "Szerokosc : "+punkt_x+"<br/> Długosc:  "+punkt_y+" <br/> Zoom: "+zoom;
var szer = punkt_x;
var dl = punkt_y;
var pokaz_wspolrzedne = document.getElementById('wspolrzedne');
pokaz_wspolrzedne.innerHTML = napis;
var szerokosc_geo = document.getElementById('szerokosc_geo');
szerokosc_geo.value = szer;
var dlugosc_geo = document.getElementById('dlugosc_geo');
dlugosc_geo.value = dl;
});
GEvent.trigger(marker_default,'click');  
//---------------
};
}


Chcę aby warunek wywoujący się po kliknięciu dowolnego punktu na mapie był wykonywalny, zaznaczając, że przy kliknięciu na sam marker drugi określający warunek zostaje spełniony.

Mam nadzieję że w miarę jasno opisałem swój problem. Czekam na wasze sugestie.
Go to the top of the page
+Quote Post
lukasz1985
post
Post #2





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

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


Poniżej poprawiony kod (mam nadzieję, że dobrze zrozumiałem problem).
Na przyszłość polecam przejść na Google Maps API V3, jest bardziej obiektowe i dzięki temu jaśniejsze i nie ma konieczności posiadania klucza api.
Można też rozważyć zmianę sposobu nazewnictwa zmiennych (interCase, zamiat underscore_delimited, wtedy pisałoby się apiMaps i markerDefault zamiast api_maps i marker_default).
[JAVASCRIPT] pobierz, plaintext
  1. //--------------------------------------------------------------------------------------------------------
  2. //--- Google API Maps v2
  3. //--------------------------------------------------------------------------------------------------------
  4. //----------------------- po załadowaniu okna odpal funkcję pokaz_mape -----------------------------------
  5. window.onload = pokaz_mape;
  6. var api_maps;
  7. var marker_default;
  8. var punkt_x;
  9. var punkt_y;
  10. var zoom;
  11. function pokaz_mape() {
  12. //-------------------- sprawdzenie kompatybilności przeglądarki -------------------------------------------
  13. if(GBrowserIsCompatible()) {
  14. //------- zbudowanie kontrolek na mapie -------------------------------------------------------------------
  15. var api_maps = new GMap2(document.getElementById("mapform"));
  16. api_maps.addControl(new GLargeMapControl());
  17. api_maps.addControl(new GScaleControl());
  18. //------- dodawnie alternatywnej ikony -------------------------------------------------------------------
  19. var ikona = new GIcon();
  20. ikona.image = "hospital.png";
  21. ikona.iconAnchor = new GPoint(32, 32);
  22. ikona.iconSize = new GSize(32,32);
  23. //------- atrybuty punktów -------------------------------------------------------------------
  24. var geo_x = parseFloat(53.14656827755494);
  25. var geo_y = parseFloat(14.895411729812622);
  26.  
  27. var tytul = "Przykładowy znacznik";
  28.  
  29. marker_default = new GMarker(new GLatLng(geo_x,geo_y),{title:tytul, icon:ikona});
  30.  
  31. api_maps.addOverlay(marker_default);
  32. //----- przesuwanie markeru po mapie -----------------------------------------------------------------
  33. api_maps.setCenter(new GLatLng(geo_x, geo_y),15);
  34.  
  35. GEvent.addListener(api_maps,'click',function(marker_default,punkt) {
  36. var punkt_x;
  37. var punkt_y;
  38. if(marker_default) {
  39. // Tutaj znajduje się kod, który wcześniej nie byl w warunku
  40. // teraz klikając w marker, wypisywane są współrzędne
  41. punkt_x = marker_default.getPoint().lng(); // te zmienne tj. punkt_x
  42. punkt_y = marker_default.getPoint().lat(); // punkt_y
  43. var zoom = api_maps.getZoom(); // oraz zoom
  44. alert('g'); //działa, po kliknięciu pojawa się alert i współrzędne punktu
  45.  
  46. }
  47. else if(punkt) {
  48. // Natomiast, jeśli klinięto w inny punkt mapy, poprzedni marker jest
  49. // usuwany (api_maps.clearOverlays()) i wstawiany jest nowy marker w
  50. // klikniętym punkcie
  51. alert('h'); // w tym warunku w ogóle nie działają (czemu? nie wiem)
  52. api_maps.clearOverlays();
  53. var marker_default = new GMarker(punkt,{title:tytul, icon:ikona});
  54. api_maps.addOverlay(marker_default);
  55. }
  56. //------ napis z parametrami geograficznymi ----------------------------------------------------------
  57. var napis = "Szerokosc : "+punkt_x+"<br/> Długosc: "+punkt_y+" <br/> Zoom: "+zoom;
  58. var szer = punkt_x;
  59. var dl = punkt_y;
  60. var pokaz_wspolrzedne = document.getElementById('wspolrzedne');
  61. pokaz_wspolrzedne.innerHTML = napis;
  62. var szerokosc_geo = document.getElementById('szerokosc_geo');
  63. szerokosc_geo.value = szer;
  64. var dlugosc_geo = document.getElementById('dlugosc_geo');
  65. dlugosc_geo.value = dl;
  66. });
  67. GEvent.trigger(marker_default,'click');
  68. //---------------
  69. };
  70. }
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:51