Google map(Egmap) + ajax + renderPartial. Проблема

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
browser_ff
Сообщения: 77
Зарегистрирован: 2012.07.19, 21:34

Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение browser_ff »

Здравствуйте. Появилась у меня идея сделать динамическую подгрузку карту с маркерами на ней. Застрял на самом начале. Сделал renderPartial следующего содержания:

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

<?php
$gMap = new EGMap();
$gMap->setWidth(880);
$gMap->setHeight(550);
$gMap->zoom = 6;
$mapTypeControlOptions = array(
'position' => EGMapControlPosition::RIGHT_TOP,
'style' => EGMap::MAPTYPECONTROL_STYLE_HORIZONTAL_BAR
);

$gMap->mapTypeId = EGMap::TYPE_ROADMAP;
$gMap->mapTypeControlOptions = $mapTypeControlOptions;

// Preparing InfoWindow with information about our marker.
$info_window_a = new EGMapInfoWindow("<div class='gmaps-label' style='color: #000;'>Hi! I'm your marker!</div>");

// Setting up an icon for marker.

$icon = new EGMapMarkerImage("http://google-maps-icons.googlecode.com/files/car.png");

$icon->setSize(32, 37);
$icon->setAnchor(16, 16.5);
$icon->setOrigin(0, 0);

// Saving coordinates after user dragged our marker.
$dragevent = new EGMapEvent('dragend', "function (event) {
$.ajax({
'type':'POST',
'url':'".$this->createUrl('catalog/savecoords').'/'.$items->id."',
'data':({'lat': event.latLng.lat(), 'lng': event.latLng.lng()}),
'cache':false,
});}", false, EGMapEvent::TYPE_EVENT_DEFAULT);

// If we have already created marker - show it
if ($map) {

$marker = new EGMapMarker($map->lat, $map->lng, array('title' => Yii::t('catalog', $items->type->name),
'icon'=>$icon, 'draggable'=>true), 'marker', array('dragevent'=>$dragevent));
$marker->addHtmlInfoWindow($info_window_a);
$gMap->addMarker($marker);
$gMap->setCenter($map->lat, $map->lng);
$gMap->zoom = 16;

// If we don't have marker in database - make sure user can create one
} else {
$gMap->setCenter(38.348850, -0.477551);

// Setting up new event for user click on map, so marker will be created on place and respectful event added.
$gMap->addEvent(new EGMapEvent('click',
'function (event) {var marker = new google.maps.Marker({position: event.latLng, map: '.$gMap->getJsName().
', draggable: true, icon: '.$icon->toJs().'}); '.$gMap->getJsName().
'.setCenter(event.latLng); var dragevent = '.$dragevent->toJs('marker').
'; $.ajax({'.
'"type":"POST",'.
'"url":"'.$this->createUrl('catalog/savecoords')."/".$items->id.'",'.
'"data":({"lat": event.latLng.lat(), "lng": event.latLng.lng()}),'.
'"cache":false,'.
'}); }', false, EGMapEvent::TYPE_EVENT_DEFAULT_ONCE));
}
$gMap->renderMap(array(), Yii::app()->language);


?>
Вставил в страницу и оно работает так. Затем когда пытаюсь отдать тот же renderPartial получаю только:

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

<div id="EGMapContainer1" style="width:880px;height:550px;"></div>
В ответе на запрос. Кто нибудь обяснит в чем дело? Спасибо
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение anton44eg »

public string renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)
попробуйте сделать processOutput true
browser_ff
Сообщения: 77
Зарегистрирован: 2012.07.19, 21:34

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение browser_ff »

anton44eg писал(а):public string renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false)
попробуйте сделать processOutput true
Сделал так. Делаю запрос - он начинает все скрипты грузит что и так уже есть в <head></head>

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

$model = $this->loadUser();
                $this->renderPartial('//layouts/inside/_map_private',
            array('model'=>$model),false,true);
                }
Это всегда находится на страничке:

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

<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
/*<![CDATA[*/
google.load("maps","3",{'other_params':'sensor=false&language=en'});

                      var EGMap0 = null;
/*]]>*/
</script>
Реакция - таже :(
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение Koduc »

Перед renderPartial сделайте:
Yii::app()->clientscript->scriptMap['*'] = false;
- по идее, отключит все внешние js (из файлов). Остальное должно будет отработать.
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
browser_ff
Сообщения: 77
Зарегистрирован: 2012.07.19, 21:34

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение browser_ff »

Koduc писал(а):Перед renderPartial сделайте:
Yii::app()->clientscript->scriptMap['*'] = false;
- по идее, отключит все внешние js (из файлов). Остальное должно будет отработать.
Скрипты не грузятся,но карты не появляется к сожалению
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение Koduc »

browser_ff писал(а):Скрипты не грузятся,но карты не появляется к сожалению
Ошибки ява-скрипт? Множество карт (какой-нибудь конфликт id)?
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
browser_ff
Сообщения: 77
Зарегистрирован: 2012.07.19, 21:34

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение browser_ff »

Koduc писал(а):
browser_ff писал(а):Скрипты не грузятся,но карты не появляется к сожалению
Ошибки ява-скрипт? Множество карт (какой-нибудь конфликт id)?
Firebug ничего не говорит
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Google map(Egmap) + ajax + renderPartial. Проблема

Сообщение Koduc »

browser_ff писал(а):Firebug ничего не говорит
Ну то есть данные отдаются какие надо, ява-скрипт нужный выводится? Значит проблема не в выводе, а уже где-то до.
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Ответить