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);
}
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
<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ć.