2012-06-23 2 views
4

Я использую это расширение Yii Framework: Jquery-gmap Im мое приложение я использовал $gmap->updateMarkerAddressFromModel & $marker->capturePosition.JQuery-GMap юй

Но $gmap->updateMarkerAddressFromModel не работает, если используется $marker->capturePosition, в противном случае $gmap->updateMarkerAddressFromModel работает отлично при использовании отдельно.

Моего код

<?php 
       Yii::import('ext.jquery-gmap.*'); 
       $gmap = new EGmap3Widget(); 
       $gmap->setSize(400, 234); 

       // base options 
       $options = array(
        'scaleControl' => true, 
        'zoom' => 15, 
        'center' => array(0, 0), 
        'mapTypeId' => EGmap3MapTypeId::ROADMAP, 
        'mapTypeControlOptions' => array(
         'style' => EGmap3MapTypeControlStyle::DROPDOWN_MENU, 
         'position' => EGmap3ControlPosition::TOP_CENTER, 
        ), 
       ); 
       $gmap->setOptions($options); 

       // marker with custom icon 
       $marker = new EGmap3Marker(array(
          'draggable' => true, 
         )); 
       $marker->address = 'London'; 
       $marker->capturePosition(
        // the model object 
        $businessModel, 
        // model's latitude property name 
        'lat', 
        // model's longitude property name 
        'longi', 
        array('drag') 
       ); 
       // tell the gmap to update the marker from the model fields. 
       $gmap->updateMarkerAddressFromModel(
         // the model object 
         $businessModel, 
         array('street','town','country'), 
         array('zoom'=>16) 
       ); 
       $marker->centerOnMap(); 
       $gmap->add($marker); 
       $gmap->renderMap(); 
       ?> 
+0

, что это журнал юй говорит вам при выполнении $ gmap-> capturePosition – Orlymee

+0

Что такое $ бизнес-модель? можете ли вы дать код для этого? – Orlymee

+0

$ businessModel в порядке .. не о чем беспокоиться об этой части кода – iThink

ответ

1

Вы не инициализация модели вы проходящая к виду.

Итак, прежде чем вы сможете передать модель в представление, вам необходимо добавить $businessModel = new BusinessModel() Я предполагаю, что это имя вашего класса, а также ссылка на него. Опять же, я предполагаю, что класс модели имеет правильные члены, определенные, например, lat и long, которые вы используете позже.

Посмотрите на примере ниже: пример нам, используя класс Address с 3 открытых членов, широта, долгота и zoomlevel

From the jquery-gmap plugin documentation:

Сохранить Маркер Положение и Карта Увеличить на Yii Модель

Позволяет захватывать широту и долготу от маркера карты и уровня масштабирования карты до объекта модели Yii. Это полезно, если вы хотите сохранить дополнительную информацию, связанную с адресом в базе данных.

Адрес пример модели:

class Address extends CActiveRecord 
{ 
    public $latitude; 
    public $longitude; 
     public $mapZoomLevel; 

    public function rules() 
    { 
      return array(
       array('latitude,longitude', 'numerical'), 
       array('mapZoomLevel', 'numerical', 'integerOnly'=>true), 
      ); 
    } 
} 

В файле вида:

// init the model (usually passed to view) 
$address = new Address(); 


// init the map 
$gmap = new EGmap3Widget(); 
$gmap->setOptions(array('zoom' => 14)); 

// create the marker 
$marker = new EGmap3Marker(array(
    'title' => 'Draggable address marker', 
    'draggable' => true, 
)); 
$marker->address = '10 Downing St, Westminster, London SW1A 2, UK'; 
$marker->centerOnMap(); 

// set the marker to relay its position information a model 
$marker->capturePosition(
    // the model object 
    $address, 
    // model's latitude property name 
    'latitude', 
    // model's longitude property name 
    'longitude', 
    // Options set : 
    // show the fields, defaults to hidden fields 
    // update the fields during the marker drag event 
    array('visible','drag') 
); 
$gmap->add($marker); 

// Capture the map's zoom level, by default generates a hidden field 
// for passing the value through POST 
$gmap->map->captureZoom(
    // model object 
    $address, 
    // model attribute 
    'mapZoomLevel', 
    // whether to auto generate the field 
    true, 
    // HTML options to pass to the field 
    array('class' => 'myCustomClass'), 
); 

$gmap->renderMap(); 
+0

Мне нужен ответ на мою проблему, а не объяснение документа :) И да, я инициализировал businessModel – iThink

Смежные вопросы