Клуб API Карт

Кнопка для создания маркеров

mkone112
18 мая 2011, 01:08

Я уже создавал такую тему и даже получил  ответ от Лунного программиста(спасибо ему) но я совсем не программист и за целые сутки перед монитором не смог добавить даже кнопку !

Суть проблемы прежняя при щелчке на карту открывается балун через который можно добавить метку а хотелось бы чтобы сначала нужно было тыкнуть на кнопку и только потом мог бы открываться балун !!

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<title>Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями. Новая версия</title>
 
 <style type="text/css">
         html, body {
           width: 100%;
           height: 100%;
           margin: 0;
           padding: 0;
        }
        #YMapsID { 
            width: 100%;
           height: 100%;
            min-height:170px;
            min-width:690px;
        }
       
       
    </style>
<script type="text/javascript">
  
var map;
 
window.onload = function () {
            map = new YMaps.Map(document.getElementById("YMapsID")
            map.setCenter(new YMaps.GeoPoint(50.232509,50.915218), 2, YMaps.MapType.SATELLITE);
 
            map.addControl(new YMaps.TypeControl()
            map.addControl(new YMaps.ToolBar()
            map.addControl(new YMaps.Zoom()
            map.addControl(new YMaps.ScaleLine()
            map.enableScrollZoom(
   // Создание кнопки
            
//Запрос данных и вывод маркеров на карту
YMaps.jQuery.getJSON("vivodpointsmap.php",
function(json){
for (i = 0; i < json.markers.length; i++) {
var placemark=new YMaps.Placemark(new YMaps.GeoPoint(json.markers[i].lat,json.markers[i].lng), {style: "default#redSmallPoint"}
placemark.description= '<div style="color:#ff0303;font-weight:bold">'+json.markers[i].name+'</div>';
placemark.description = placemark.description+'<strong>Описание:</strong> '+json.markers[i].descriptions;
map.addOverlay(placemark);
}
 
}
 
var myLayout = function (geoPoint) {
   var $element = YMaps.jQuery('<div>Название: <input type="text" id="name"/><br />Описание: <textarea id="descriptpoint" cols="20" rows="5"></textarea><br /><input type="button" value="Добавить" id="submit"/></div>');
   this.onAddToParent = function (parent) {
        $element.find('#submit').bind('click', function () {
              YMaps.jQuery.ajax({
                  url: 'addpoint.php',
                  data: {
                       namepoint: $element.find('#name')[0].value,
                      descriptpoint: $element.find('#descriptpoint')[0].value,
                       pcoord: geoPoint.toString()
                  },
 
            dataType: 'json',
                  // Это функция обработки ответа сервера
                  success: function (res) {
                       if (res.success) {
                             // если точка сохранилась, закрываем балун
                             map.closeBalloon(
                             // и ставим точку на карту
                             map.addOverlay(new YMaps.Placemark(geoPoint)
 
                       } else {
                             // иначе выдаем сообщение об ошибке
                            // YMaps.jQuery('<p style="color:red">' + e.message + '</p>').appendTo("#scriptmes");
                            YMaps.jQuery("#scriptmes").html('<p style="color:red">' + e.message + '</p>');
                       }
                  }
              }
 
        }
        $element.appendTo(parent);
   };
   this.onRemoveFromParent = function () {
        $element.remove(
   };
 
   this.update = function () {};
}
 
YMaps.Events.observe(map, map.Events.Click, function (map, e) {
     map.openBalloon(e.getCoordPoint(), new myLayout(e.getCoordPoint())
}
 
</script>   
 
</head>
 
<body>
 
<div id="YMapsID"></div>
<div id="scriptmes"></div>
 
</body>
</html>
 

 

9 комментариев
Подписаться на комментарии к посту

бьюсь уже неделю самостоятельно и никаких результатов кроме тошноты , красных глаз и переутомления

 

а где сама кпопка?

где она должна быть? на карте? под картой?

на карте рядом с остальными кнопками в левом верхнем углу карты также как например здесь-http://api.yandex.ru/maps/jsapi/examples/mapcontroltoolbarbutton.html

добавить ее на карту как в примере вы же можете?

что делать в обработчике клика на этой кнопке я вам подскажу

 

пытался но я не очень понимаю что творю когда вставляю код карта перестает работать-наверняка не туда вставляю

 возьмите нормальный браузер (firefox)

поставьте в него раширение firebug

открыв его панель вы увидите в какой строке и почему у вас ошибка

 

 Спасибо у меня получилось  FIREBUG очень помог( нашлись лишние скобки)

теперь в наличии карта с кнопкой при нажатии на которую в центре карты появляется значок метки

(котовый естественно в базу не заносится) а если нажать на карту то можно добавить метку,

 

http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/1999/xhtml">Яндекс.Карта на Вашем сайте с возможностью добавления меток пользователями. Новая версия         

 

А что теперь делать чтобы связать кнопку с добавлением меток?

 

var map, flag = false;

 

 

 

YMaps.Events.observe(map, map.Events.Click, function (map, e) {    if (flag) {        map.openBalloon(e.getCoordPoint(), new myLayout(e.getCoordPoint())    }}

 

 

            YMaps.Events.observe(button, button.Events.Click, function () {                 flag = !flag;            });