Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js]Google API - maps
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Tasilvar
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.
lukasz1985
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
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.