Добрый день. У меня не корректно работает собственной функции
edit(). Метка создается по клику по карте, после чего автоматически открывается
балун в этот момент вызывается функция, после закрытия балуна и открытия его эта
функция выполняется снова в результате чего обработчик срабатывает столько раз
сколько было создано меток и сколько раз был открыт балун. Как можно это
избежать?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona ">l.dtd
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Примеры. Геокодирование.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=AJLTv0 " type="text/javascript"></script>0BAAAAdVVMEAIAb8s3w4UkGWa 8Q1-jXbSH7_YFA-YAAAAAAAAA AABUbAlG0GzaW7jiSWTwcHLM5 6kSug==
<script type="text/javascript">
var map;
var MarkID = 0;
var Mark = [];
var CoordPoint = [];
var id, idDell, idLoad;
function edit(coord){
// Delete placemark
for(var i=0; i <CoordPoint.length ;i++){
if (CoordPoint[i] == coord) {
idDell = "#"+i+" input[value=Удалить]";
idLoad = "#"+i+" input[value=Загрузить]";
idInfo = "#"+i+" textarea";
id = i;
//alert(id);
break;
}
}
YMaps.jQuery(idDell).click(function (){
setTimeout('map.removeOverlay(Mark[id])',1);
}
// Loading
YMaps.jQuery(idLoad).click(function (){
text1 = YMaps.jQuery(idInfo).val(
alert("text = " + text1
}
}
function newcoord(coord, coord1){
for(var i=0; i <CoordPoint.length; i++){
if (CoordPoint[i] == coord){
CoordPoint[i] = coord1;
break;
}
}
}
YMaps.jQuery(function () {
// Создание перетаскиваемой метки по клику
YMaps.Events.observe(map, map.Events.Click, function(map, obj) {
var coord = obj.getGeoPoint(
CoordPoint.push(coord);
// Создаем метку с кнопкой удаления внутри
Mark[MarkID] = new YMaps.Placemark(coord, {draggable: true, style: Style1}
Mark[MarkID].description = "<div id=\""+ MarkID +"\">Описание: <br><textarea name=\"info\" maxlength=\"2000\" cols=\"25\" rows=\"3\"></textarea><br><input type=\"button\" value=\"Удалить\"><input type=\"button\" value=\"Загрузить\"></div>";
map.addOverlay(Mark[MarkID]
Mark[MarkID].openBalloon(
edit(coord);
YMaps.Events.observe(Mark[MarkID], Mark[MarkID].Events.BalloonOpen, function () {
edit(coord);
}
YMaps.Events.observe(Mark[MarkID], Mark[MarkID].Events.DragEnd, function (obj) {
coord1 = coord;
coord = obj.getGeoPoint(
newcoord(coord1, coord);
openBalloon;;
}
MarkID++;
}
}
</script>
</head>
<body>
<div id="YMapsID" style="width:100%;height:400px"></div>
</body>
</html>