Вопрос по Yandex карте

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Закрыто
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

Вопрос по Yandex карте

Сообщение asisdes »

Доброго дня!
Помогите с кодом, хотел бы сделать так, что -бы пользователи могли указывать свои координаты.
т.е. если поля в БД пустые то, высвечивается пустая карта, при клике появляется баллун и нужные координаты заносятся в нужные поля формы.
Если клиент ранее указывал, то он может менять расположение баллуна, тем самым автоматически должны меняться координаты и в нужных полях.

Так у меня есть форма, там поля: gpslat и gpslon (соответственно широта и долгота), такие же поля и в БД.
Есть форма:

Код: Выделить всё

    
       <div class="row">
        <?php echo $form->labelEx($model,'gpslat'); ?>
        <?php echo $form->textField($model,'gpslat',array('size'=>60,'maxlength'=>100)); ?>
        <?php echo $form->error($model,'gpslat'); ?>
    </div>
    
       <div class="row">
        <?php echo $form->labelEx($model,'gpslon'); ?>
        <?php echo $form->textField($model,'gpslon',array('size'=>60,'maxlength'=>100)); ?>
        <?php echo $form->error($model,'gpslon'); ?>
    </div>
    
    <div class="row">
    <?php 
    if($model->gpslat==0 || $model->gpslon==0) {
        echo "Координаты не заданы, Вы можете указать Ваши координаты";
       
        $this->widget('ext.yandexmap.YandexMap',array(
        'id'=>'map',
        'width'=>450,
        'height'=>400,
        'center'=>array(43.295904, 76.943776),
        ));

    } else {
    
    $this->widget('ext.yandexmap.YandexMap',array(
        'id'=>'map',
        'width'=>450,
        'height'=>400,
        'center'=>array($model->gpslat, $model->gpslon),
        'placemark' => array(
            array(
                'lat'=>$model->gpslat,
                'lon'=>$model->gpslon,
                'options'=>array(
                    'balloonContentHeader'=>'header',
                    'balloonContentBody'=>'body',
                    'balloonContentFooter'=>'footer',
                    'draggable'=>true,
                )
            )
        ),
    ));
    }
    ?>
    </div>
Вопрос, как сразу динамически менять значения полей?
и еще,
В режиме просмотра, например в view, какие Options прописать что бы выходили надписи, (типа: Заголовок, Картинка-Логотип, Тел, Факс),
т.е.
какой то такой код, существует?

Код: Выделить всё

placemark.setBalloonContent("<div style=\"padding-bottom:10px; text-align: center;\"><strong>'.$data->$model->title.'<strong></div><div style=\"text-align: center;\">'.$model->image.'</div>"); 

Фото, дублирует код:

Изображение Изображение Изображение
Изображение
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Вопрос по Yandex карте

Сообщение Nafania »

Вопрос, как сразу динамически менять значения полей?
апи для карт почитайте.
Когда вы ставите маркер, то вы можете узнать его координаты. В этот момент вписывайте данные в поля.
asisdes
Сообщения: 202
Зарегистрирован: 2013.10.03, 15:54

Re: Вопрос по Yandex карте

Сообщение asisdes »

нацарапал тут, горе код, отметки карты.
но возникла проблема походу тут:

Код: Выделить всё

document.forms.form2.User[gps].value=mEvent.getGeoPoint();
здесь символы '[ ]', походу зарезервированы под массивы.
поэтому в форме не меняется значение.
может кто помочь, расточить кодик, что бы по современному и красиво выглядело?
просто хотел наверное Yandex api 2 воткнуть, ну и оформить красиво, а то у меня баллун разъезжается

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

Код: Выделить всё

    <div class="row">
    <?php echo $form->labelEx($model,'gps'); ?>
    <?php
    echo $model->gps; 
    ?>
    <?php echo $form->textField($model,'gps',array('size'=>60,'maxlength'=>255)); ?>
    <script src="http://api-maps.yandex.ru/1.1/index.xml?key=AOI9UVIBAAAAWhirVAIAyU-yk0zIa-W76gAio2wvXhkqf8UAAAAAAAAAAACbGGng4WitDrUnFAW-3zGFuLT2Ow==
    " type="text/javascript"></script>
    <script type="text/javascript">
        YMaps.jQuery(function () {
        var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
        map.enableScrollZoom();
        map.setMaxZoom(25);
        map.setMinZoom(3);
        map.setCenter(new YMaps.GeoPoint(<? echo $model->gps; ?>), 18);
        
        var placemark = new YMaps.Placemark(new YMaps.GeoPoint(<? echo $model->gps; ?>), {style: "user#bluePoint"});
        placemark.name = "Имя метки";
        placemark.description = "Описание метки";
        map.addOverlay(placemark);
        map.addCursor(YMaps.Cursor.ARROW);
        YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
            map.openBalloon(mEvent.getGeoPoint(), "Место вашего расположение");
            document.forms.form2.User[gps].value=mEvent.getGeoPoint();
        });
        });
    </script>
    <div id="YMapsID" style="width:300px;height:300px;"></div>
    <?php echo $form->error($model,'gps'); ?>
    </div>
вот так выглядит на сайте

Изображение
Изображение
Закрыто