Joomla.it Forum
Non solo Joomla... => Sviluppo => : james81 17 Feb 2014, 17:40:15
-
Salve a tutti!
ho un problema dal quale non riesco a venirne a capo.
Ho un comopnente personalizzato nel quale all'iterno della viwv ho integrato una mappa di goole e fino a qui funziona tutto perfettamente.
Però il pannellino di controllo posto a sinistra, quello dello zoom per intenderci mi viene tutto sformato, stretto e basso, quasi invisibile. Non capisco come mai....qualche idea ? Grazie
-
dipende dai css del template che alterano le dimensioni delle immagini
-
alla fine ho risolto il problema che hoi riscontrato era abbastanza comune e legato alle proprietà cdd del div img maps, ho assegnato una css a a quel tag e ho risolto!
Ora mi trovo un'altro problema:
le coordinate per centrare la mappa le recupero da un form precedentemente compilato.
Il codice java utilizzato per configurare la mappa l'ho inserito all'intetrno del file view.html.php della mia view.
il problema è che non riesco a recuperare le coordinate direttamente dal file view.html.php e quindi mi restituisce "variabili non definita"
qualche idea ?
-
lasciamo il java da un'altra parte... semmai javascript che è tutta altra cosa...
comuqnue dipende come lo assegni alla view.html se metti una variabile dentro la classe, il file default.php te la vede senno no...
quindi per accedere dal template della view devi dichiarare nella classe una variabile
protected $coordinate;
e valorizzarla nella funzione display
-
si scusa intendevo dire javascript non java ! :P
avevo già provato così all'interno de view.html.php della view ma mi restituiva sempre l'errore
class ComponenteViewResult extends JView
{
protected $pass = null;
function display($tpl = null)
{
$pass = "valore";
parent::display($tpl);
}
}
-
perche è $this->pass
-
perfetto!...sono riuscito a recuperare le variabili, solo che se inserisco la mia variaible $this->pass all'interno del codice javascript dichiarato in $document->addScriptDeclaration , non me stampa
-
di sicuro non dipende da quella variabile, ma da come l'hai usata e da come hai dichiarato il codice di addscriptdeclaration
-
questo è parte del codice , quello che mi intaressa
class ComponenteViewResult extends JView
{
protected $lat = null;
protected $lng = null;
function display($tpl = null)
{
$this->lat = "00.000000";
$this->lng = "00.000000";
parent::display($tpl);
}
}
$document->addScriptDeclaration("
function load() {
var map = new google.maps.Map(document.getElementById(\"map\"), {
center: new google.maps.LatLng( $this->lat , $this->lng ), <<<<<<<< qui inserisco le mie due variabili <<<<<<<<<
zoom: 7,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow;
// Change this depending on the name of your PHP file
downloadUrl(\"http://www.sito.it/cartella/maps.php\", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagNam e(\"marker\");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute(\"name\");
var address = markers[i].getAttribute(\"address\");
var type = markers[i].getAttribute(\"type\");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute(\"lat\")),
parseFloat(markers[i].getAttribute(\"lng\")));
var html = \"\" + name + \" [br /]\" + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
");
-
Il problema fondamentale qua non è joomla che non funziona ma forse hai bisogno di studiare un minimo la programmazione ad oggetti.
Questo codice non ti funzionera mai, e strano che non ti vengano messaggi di errore.
Errore 1
$document->addScriptDeclaration(
$document cos'e? non è nulla semmai avresti dovuto fare prima $document = JFactory::getDocument();
Errore 2
Stai scrivendo codice al di fuori della classe quindi $this non è un operatore valido
LE possibili soluzioni sono,
1 metti tutto quel codice al di fuori della classe dentro alla funzione display prima di parent::display
2) soluzione che ti consiglio, metti quel codice dentro al file default.php che ai nella tua cartella tmpl
-
per quanto riguardava il $document = JFactory::getDocument();
l'ho inserito è che ho postato solo la parte del codice relativo allo script.
Comunque poi ho risolto (al momento) seguendo il tuo consiglio e mettndo tutto in defalut.php, che a dire il vero era la soluzione più immediata......comunque voglio (tempo permettendo) capire come gestire la cosa da view.html.php
-
metti il codice dentro display e festa finita.
ma comunque la soluzione migliore è del default perche tramite un rewrite nel template potresti togliere questa funzionalita senza modificare il codice del componente
-
..avrai semplicemente sbagliato la sintassi nell'addscript facile che se usi un tool di debug tene accorgi.