Google maps Api2 към google maps api3

Имам проблеми с превода на скрипт с google maps от API2 на API3. Скриптът работи по този начин - На картата има един маркер и потребителят може да го плъзне или да щракне върху картата и да премахне този маркер, за да щракне върху място, координатите с текущата позиция на маркера отиват на скрит вход. Това е скриптът:

<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
<!-- google maps -->


<!-- Do rejestracji -->
<script type='text/javascript'>
<!-- 
var mapa;   
var marker;  

function mapaStart()
 {
 if(GBrowserIsCompatible())  
 {       
mapa = new GMap2(document.getElementById("doMeeting"));

mapa.setCenter(new GLatLng(52.348763181988076, 18.61083984375), 6, G_HYBRID_MAP);
mapa.addControl(new GLargeMapControl());  
mapa.addControl(new GMapTypeControl()); 

marker = new GMarker(mapa.getCenter(),{icon: marker, draggable: true});
mapa.addOverlay(marker);

// zdarzenia dla markera
GEvent.addListener(marker,'drag',uaktualnijWspolrzedne);
GEvent.trigger(marker,'drag');

// zdarzenia dla mapy
GEvent.addListener(mapa,'click',function(o,p)
{
  if(p)
  {
    marker.setPoint(p);
    uaktualnijWspolrzedne();
  }
});
}
}

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();
}

</script>

И изглед:

<div id="doMeeting" style="width: 400px; height: 400px;"></div>
<input type="hidden" id="lat" name="lat"/>
<input type="hidden" id="lng" name="lng"/>

И моят проблем е, че моят скрипт за превод не работи като стария. Маркерът може само да плъзга, опцията с щракване върху картата няма да работи и координатите на позицията на маркера не отиват за въвеждане. Нямах опит с Google Maps или JavaSript, така че моля за помощ. Ето как се опитвам да преведа скрипта:

<script type='text/javascript'>
<!-- 
var mapa;  

function mapaStart()
{     
mapOpc = {
center:new google.maps.LatLng(52.348763181988076, 18.61083984375),
zoom:6,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
mapa=new google.maps.Map(document.getElementById("doMeeting"),mapOpc);

var marker=new google.maps.Marker({
position:new google.maps.LatLng(52.348763181988076, 18.61083984375),
draggable: true,
map: mapa,
});
marker.setMap(mapa);

// zdarzenia dla markera
google.maps.event.addListener(marker,'drag', uaktualnijWspolrzedne);
google.maps.event.trigger(marker,'drag');

// zdarzenia dla mapy
google.maps.event.addListener(mapa,'click',function(event)
{
    marker.setPoint(event);
    uaktualnijWspolrzedne();
});

}
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();
}
google.maps.event.addDomListener(window, 'load', mapaStart);
</script>

person user3819713    schedule 25.11.2014    source източник
comment
marker.setPoint(event); няма да работи, ще трябва да направите marker.setPoint(event.latLng);   -  person duncan    schedule 26.11.2014
comment
Добре, това помага малко, имам опция за щракване върху картата, но все още координатите не отиват на вход.   -  person user3819713    schedule 26.11.2014


Отговори (1)


Проблеми:

  1. маркерът трябва да е глобален, както беше във вашата v2 версия (получаване на грешка в javascript" Uncaught ReferenceError: marker is not defined)
  2. marker.getLatLng не съществува, сега е marker.getPosition
  3. marker.setPoint не съществува, сега е marker.setPosition (както д-р Molle отбеляза)

работеща цигулка

var mapa;
var marker;

function mapaStart() {
    mapOpc = {
        center: new google.maps.LatLng(52.348763181988076, 18.61083984375),
        zoom: 6,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    mapa = new google.maps.Map(document.getElementById("doMeeting"), mapOpc);

    marker = new google.maps.Marker({
        position: new google.maps.LatLng(52.348763181988076, 18.61083984375),
        draggable: true,
        map: mapa,
    });
    marker.setMap(mapa);

    // zdarzenia dla markera
    google.maps.event.addListener(marker, 'drag', uaktualnijWspolrzedne);
    google.maps.event.trigger(marker, 'drag');

    // zdarzenia dla mapy
    google.maps.event.addListener(mapa, 'click', function (event) {
        marker.setPosition(event.latLng);
        uaktualnijWspolrzedne();
    });

}

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

    input_lat.value = punkt.lat();
    input_lng.value = punkt.lng();
}
google.maps.event.addDomListener(window, 'load', mapaStart);
person geocodezip    schedule 26.11.2014