我正在使用此扩展程序Yii Framework: Jquery-gmap
我的应用程序我用过$gmap->updateMarkerAddressFromModel
& $marker->capturePosition
。
但$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 :(得分:1)
您没有初始化传递给视图的模型。
因此,在将模型传递给视图之前,您需要添加
$businessModel = new BusinessModel()
我假设这是您的类的名称以及对它的引用。我再次假设模型类具有正确的成员定义,即lat和long,稍后您将使用它。
看一下下面的示例:我们使用一个包含3个公共成员,纬度,经度和缩放级别的类Address
的示例
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();