получить геолокацию пользователей с помощью EgMap

Я сейчас пользуюсь расширение EGmap для Yii. и мне было интересно, как получить текущую геолокацию пользователей при загрузке карты?

Вот мой код:

Yii::app()->clientScript->registerScript('filterscript',"if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
alert(initialLocation)
//map.setCenter(initialLocation);
}, function() {
alert(initialLocation); //alerts the lat lng
});
}
// Browser doesn't support Geolocation
else {
alert('fail');
}
",CClientScript::POS_READY);

Yii::import('ext.EGMap.*');

$gMap = new EGMap();
$gMap->zoom = 5;
$gMap->width = '100%';
$gMap->height = 200;

$mapTypeControlOptions = array(
'position'=> EGMapControlPosition::RIGHT_TOP,
'style'=>EGMap::MAPTYPECONTROL_STYLE_DEFAULT,
);

$gMap->mapTypeId = EGMap::TYPE_HYBRID;

$gMap->mapTypeControlOptions= $mapTypeControlOptions;

// Create geocoded lat and lng here
$lat = $lng ='';

// Center the map on geocoded address
$gMap->setCenter($lat, $lng);

// Add marker on geocoded address
$gMap->addMarker(
new EGMapMarker($lat, $lng)
);

$gMap->renderMap();

Если расширение не используется, заставьте его работать с этим. (учебник со страницы API Google Map)

  var map = new google.maps.Map(document.getElementById("map-canvas"), myOptions);

// Try W3C Geolocation (Preferred)
if(navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeolocation(browserSupportFlag);
});
}
// Browser doesn't support Geolocation
else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}

как поместить маркер lat lang пользователей на карту, так как это сделано вне расширения? Я даже делаю это правильно?

4

Решение

Первый набор jsName:

$gMap->setJsName('test_map');

Затем добавьте afterInit код для renderMap вызов, включая имя из предыдущего шага:

$script = "if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
alert(initialLocation)
test_map.setCenter(initialLocation); // <-- HERE: put name from setJsName() call
}, function() {
alert(initialLocation); //alerts the lat lng
});
}
// Browser doesn't support Geolocation
else {
alert('fail');
}
";

Параметр Fistst является массивом дополнительных скриптов инициализации:

$gMap->renderMap(array($script));

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Не проверено, но должно указывать правильное направление 🙂

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]