проблема с перетаскиванием маркеров в Google Maps - PullRequest
0 голосов
/ 23 июня 2011

Я беру детали маркера из базы данных.Код:

app.entries[id].data = {'id': id, 'map': entry[1].innerHTML,'type_id':

entry[2].innerHTML,'name': entry[3].innerHTML,'descript':  entry[4].innerHTML, 'parish':

entry[5].innerHTML,'zip': entry[6].innerHTML, 'url': entry[7].innerHTML, 'lng':

entry[8].innerHTML,'lat':entry[9].innerHTML,'tags':entry[10].innerHTML,'img': 

entry[11].innerHTML,'imgs':entry[12].innerHTML};

app.entries[id].data.imgHTML = (app.entries[id].data.img == "") ? "" : 

fill_template(app.entries[id].data,app.infoWindowImageHTML);

var str = fill_template(app.entries[id].data,app.searchRowHTML);

html.push(str);

if (app.entries[id].data.lat != 0 || app.entries[id].data.lng != 0) {

   var point = new GLatLng(app.entries[id].data.lat,app.entries[id].data.lng);

   var m = new GMarker(point,{draggable: true});

   GEvent.addListener(m, "dragstart", function() {

          // map.closeInfoWindow();

      var latlngold = m.getLatLng();

  });

   GEvent.addListener(m, "dragend", function() {

var m = новый GMarker (точка, {draggable: true});

 m.entry_id = id;
 var p=m.entry_id;

    var latlngnew = m.getLatLng();

     alert(latlngnew);

     //m.setLatLng(new GLatLng(latlng));

     editentry1(latlngnew,p);

   });
 }

Функция dragend и dragstart всегда берет последний маркердетали, а не детали маркера перетаскивания.

функция editentry1 (latlngnew, p) {

     var newlat=latlngnew.lat();

 var newlng=latlngnew.lng();

     var d = new Date();

var dv = d.valueOf();

var url = "<?php echo $g['appPath']; ?>admin/editPoint.php?d="+dv+"&

newlat = "+ newlat +" newlng = "+ newlng +" & p = "+ p;

 var s = $('mapStatus');

s.innerHTML = "Точка редактирования ...";

s.show ();

new Ajax.Request(url, {

  method: 'get',

  onSuccess: editEntryReturn,

  onFailure: requestFailed

});

}

editPoint.php

require ("createThumb.php");

$ newlng = $ _GET ['newlng'];

$newlat = $_GET['newlat'];

$p=$_GET['p'];

$ q = "Запись ОБНОВЛЕНИЯ SET lat = '$ newlat', lng = '$ newlng' WHERE id = '$ p';";

  $r = updateBatch($q);

}?> Но позициямаркера не меняется

1 Ответ

0 голосов
/ 23 июня 2011

Оберните ваш код создания маркера в функцию. Это создаст замыкание , в котором обратные вызовы перетаскивания могут найти соответствующий маркерный объект:

function createMarker (point)
{
    var m = new GMarker(point,{draggable: true});

    GEvent.addListener(m, "dragstart", function() {
        var latlngold = m.getLatLng();
    });

    GEvent.addListener(m, "dragend", function() {
        var latlngnew = m.getLatLng();
        editentry1(latlngold,latlngnew);
    });

    return m;
}

Позвоните по этому поводу из вашего заявления if после получения пункта:

if (app.entries[id].data.lat != 0 || app.entries[id].data.lng != 0) 
{
    var point = new GLatLng(app.entries[id].data.lat,app.entries[id].data.lng);
    map.addOverlay(createMarker (point));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...