![]() |
![]() ![]() |
![]() |
![]()
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. |
|
|
![]()
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).
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 14:51 |