Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Problem z mapą do wersji V3
Forum PHP.pl > Forum > Przedszkole
roghatt
Mam 3 pola do wpisania miasta, kodu pocztowego i ulicy.
Button "zaznacz na mapie". W wersji v2 mapy google ładnie to działało. Teraz próbuję przerobić to do wersji V3 i nie działa. To co wiedziałem to zmieniłem na v3. Pod kodem opis problemu
Kod JS
Kod
    var mapa;        

        var marker;
        var geo;
        var ikona = new google.maps.MarkerImage();  
        ikona.image = "http://maps.google.com/mapfiles/kml/pal2/icon13.png";  
        ikona.iconAnchor = new google.maps.Point(16, 16);
        ikona.shadow = "";  
        ikona.infoWindowAnchor = new google.maps.Point(16,16);  
        ikona.iconSize = new google.maps.Size(32, 32);      

        function pobierzWartosc(obiektRadio)
        {
            if(!obiektRadio)
                return null;
            var ilosc = obiektRadio.length;

            if(ilosc == undefined)
            
                if(obiektRadio.checked)
                    return obiektRadio.value;
            else
                return null;
            for(var i=0; i<ilosc; i++)
            {
                if(obiektRadio[i].checked)
                {
                    return obiektRadio[i].value;
                }
            }
            return null;
        }                
    
        function mapaStart()
        {
                        
                var wspolrzedne = new google.maps.LatLng(50.77120783188783, 17.5396728515625);
                var opcjeMapy = {
                    zoom: 8,
                    center: wspolrzedne,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    disableDefaultUI: true
                };
                mapa = new google.maps.Map(document.getElementById("mapka"), opcjeMapy);
                geo = new google.maps.Geocoder();

                marker = new google.maps.Marker(mapa.getCenter(),{icon: ikona, draggable: true});
                marker.opis = 'bez opisu';
                marker.setMap(mapa);
        
                // zdarzenia dla markera
                google.maps.Event.addListener(marker,'drag',uaktualnijWspolrzedne);
                        
                // zdarzenia dla mapy
                google.maps.Event.addListener(mapa,'click',function(o,p)
                {
                    if(p)
                    {
                        marker.setPoint(p);
                        uaktualnijWspolrzedne();
                    }
                });

                google.maps.Event.addListener(marker,'click',function()
                {
                    marker.openInfoWindowHtml(marker.opis);
                });

                google.maps.Event.trigger(marker,'drag');
                uaktualnijDymek()
        }

        function skoczDoAdresu(adres)
        {
            if(!geo) return;
            geo.getPosition(adres,function(punkt)
            {
                if (!punkt)
                {
                    // jeśli punkt nie istnieje, to adres nie został znaleziony
                    alert(adres + " nie został znaleziony!");
                }
                else
                {
                    // centrujemy na znalezionym punkcie
                    mapa.panTo(punkt);
                    
                    // czyścimy markery z mapy
                    mapa.clearOverlays();
                    
                    // dodajemy w tym miejscu marker

                    marker = new google.maps.Marker(punkt,{icon: ikona, draggable: true, title: adres});
                    mapa.addOverlay(marker);
                    uaktualnijWspolrzedne();
                    google.maps.Event.addListener(marker,'drag',uaktualnijWspolrzedne);
                                        // i otwieramy dymek z adresem
                    marker.openInfoWindowHtml('<strong>Poszukiwany adres</strong><br />'+adres);
                }
            });
        }

        function uaktualnijWspolrzedne()
        {
            var input_lat = document.getElementById('lat');
            var input_lng = document.getElementById('lng');
            var punkt = marker.getLatLng();

            input_lat.value = punkt.lat();
            input_lng.value = punkt.lng();
        }
        
        function uaktualnijIkone()
        {
            var url = pobierzWartosc(document.forms['formularz'].elements['ikona']);
            marker.setImage(url);
            uaktualnijDymek()
        }

        function uaktualnijDymek()
        {
            var url = pobierzWartosc(document.forms['formularz'].elements['ikona']);
            var tytul = document.getElementById('nazwa').value;
            var opis = document.getElementById('opis').value;
            
            var html = '<img src="'+url+'" alt="" style="float: right; border: 0;" /><h3 class="marker">'+tytul+'</h3><p class="marker">'+opis+'</p>';
            marker.opis = html;
            if(mapa.getInfoWindow() && !mapa.getInfoWindow().isHidden())
                google.maps.Event.trigger(marker,'click');
        }
        function geolokalizuj() {
                        var adres = document.getElementById('miasto').value + " " + document.getElementById('kodpocztowy').value + ", ul. " + document.getElementById('ulica').value;
            skoczDoAdresu(adres);
        
        }


Przycisk do zaznaczania
  1. <input type="button" id="zaznaczMiejsce" value="Zaznacz na mapie" onclick="geolokalizuj()" />


W konsoli firefox pokazuje błąd
TypeError: google.maps.Event is undefined
odnośnie linijki
Kod
google.maps.Event.addListener(marker,'click',function()


Drugi błąd przy kliknięciu na przycisk "zaznacz na mapie"
TypeError: geo.getPosition is not a function
odnośnie linijki
Kod
geo.getPosition(adres,function(punkt)


Nie mogę sobie z tym poradzić.
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.