我正在使用此扩展程序Yii Framework: Jquery-gmap
我是我的应用程序我使用了$gmap-> updateMarkerAddressFromModel& $标记 – > capturePosition.
但是当使用$marker-> capturePosition时,$gmap-> updateMarkerAddressFromModel无效,否则$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();
?>
解决方法:
您没有初始化要传递给视图的模型.
因此,在将模型传递给视图之前,您需要添加
$businessModel = new BusinessModel()我假设这是你的类的名称以及它的引用.我再次假设模型类定义了正确的成员,即lat和long,稍后您将使用它.
看一下下面的例子:我们使用一个带有3个公共成员的地址,纬度,经度和缩放级别的示例
From the jquery-gmap plugin documentation:
Save Marker Position and Map Zoom to Yii Model
Allows capturing the latitude and longitude from a map marker, and the map’s zoom level, to a Yii model object. This is useful if you want to save additional @R_453_4045@ion related to an address in your database.
Address model example :
class Address extends CActiveRecord
{
public $latitude;
public $longitude;
public $mapZoomLevel;
public function rules()
{
return array(
array('latitude,longitude', 'numerical'),
array('mapZoomLevel', 'numerical', 'integerOnly'=>true),
);
}
}
In your view file :
// 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 @R_453_4045@ion 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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。