gmap és a térkép megjelenítése

nevergone képe

Sziasztok!

Drupal 6 alatt próbálom összekalapálni a gmap és location modulokat, elég jó sikerrel. Létrehoztam egy tartalomtípust, amelybe egy adott pontot lehet felvinni, ez elég jól működik (a cím alapján történő keresés is), viszont az elmentett tartalomtípusban csak a megadott cím, és a pont kordinátái szerepelnek, de én ott a térképet szeretném megjeleníteni. Sőt, az lenne a legjobb, ha a térkép nem a jelenlegi szöveges információk helyett, hanem azokkal együtt jelenne meg.
Valakinek van tapasztalata ebben?

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
aboros képe

van egy ilyen blokk. már nem emlékszem, hogy ezt a location csinálja e vagy a gmap, de van egy ilyen blokk, na. innen már a fantáziádra bízom, hogy ezt hogyan jeleníted meg... ;)
hevenyészett "próbáljuk ki mit csinál" példát tudok mutatni:
http://keret.hu/portal/hu/2007-11-07/matroz-kisvendeglo
a "hely" című blokkról beszélek.

0
0

-
clear: both;

nevergone képe

Jó lenne, csak node -ba kellene beágyaznom.

0
0
aboros képe

nem akarok az aláírásoddal jönni, de ;)

1. Panels?

2. Ha nem panels, akkor module_invoke() -ba meghívod annak a modulnak a hook_block -ját, ami ezt a blockot előállítja és kiírod a blokkot.
kábé például: http://drupal.org/node/164799#comment-800245

ha meg ezek se, akkor van még ebáut négyszáessze találatok in nullaegésznegyvenöt szekondsz. ;)
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1...

0
0

-
clear: both;

nevergone képe

Végülis használhatónak tűnik, de eléggé olyan, mintha bal kézzel vakarnám a jobb fülemet.
De köszönöm, ha más nem lesz (vajon a Views kiakad rajta?), az aláírásommal pedig ne tessék visszaélni. :)

Ui.: Panels még nincs D6 -ra. :(

0
0
aboros képe

pontosan miért is?
ennek - blokkot a nodeba ágyazni - szerintem ez egy elég logikus és egyszerű módja. hirtelen egyszerűbbet nem is tudok. persze ettől még könnyen lehet, hogy van. akkor viszont érdekelne. :)

0
0

-
clear: both;

nevergone képe

Valószínűleg rosszul fogalmaztam, én nem ugyanazt a blokkot szeretném megjeleníteni, hanem egy olyan tartalomtípust készíteni, amelyben térkép jelenik meg az ott megadott kordináták alapján. Régebben össze tudtam "kalapálni", és most nem tudom, hogyan. :(

0
0
aboros képe

hirtelen:
template.php

function THEMENAME_preprocess_node(&$vars) {
  $lat = $vars['node']->location['lat'];
  $lon = $vars['node']->location['lon'];
  $gmacro = "[gmap markers=blue::".$lat.",".$lon." |zoom=6 |center=".$lat.",".$lon." |width=100% |height=600px |id=macro_map |control=Large |type=Map]";
  $vars['content'] .= '<div class="location-map">'.$gmacro.'</div>';
}

nem próbáltam, csak irány...

0
0

-
clear: both;

nevergone képe

Olybá tűnik, hogy nem működik ez a megoldás, viszont jól rámutatott arra, hogy komoly hiányosságaim vannak a template "kezelés" területén.

0
0
aboros képe

olyasmit tudok elképzelni, hogy nem létezik a $vars['node']->location['lat'] .. vagy lon... amúgy jónak kell lennie. írasd ki a $vars -t... ha nincs benne a location, akkor $node = node_load($vars['nid']); de ez szerintem hülyeség, benne kell valahol lennie.

vagy a gmacro nem megy? engedélyezned kell ám a beviteli formáknál a gmap macro filtert. lehet azabaj.

egyébként van a gmap modulnak valami függvénye is, ami egy tömböt vár a beállításokkal és visszaad egy térképet. már nem emlékszem hogy van pontosan, benne van a readme-be elvileg.

0
0

-
clear: both;

nevergone képe

Az általad mutatott megoldás teljesen jól kigenerál egy GMap makrót, viszont ettől még a térkép nem jelenik meg, még akkor sem, ha az adott node beviteli formájában megfelelően engedélyezve van a GMap makró bevitele. Érdekes, hogy ha a függvény által kigenerált makrót közvetlenül megadom egy node törzsében, akkor teljesen jól megjelenik a szükséges térkép.
Szóval, hogy jobban értsd a problémám:
Van nekem egy ilyenem. Egy adott node -hoz rendelnék térképet, a node -nak nem is lesz törzse, pontosabban ez lesz az. Tudok benne cím alapján jelölőt létrehozni (az a kis szürke cucc a térképen), viszont ha elmentem a node -t, akkor csak ennyit kapok eredményül. Ez végülis nem rossz, de szeretném ezzel együtt a térképet is megjelentetni. A "GMap macro builder" nem ér, egyrészt a felhasználóknak körülményes, meg szerintem eléggé felesleges kör is.

Amúgy az általad a template.php -ben összehozott "varázslás" szerintem nem túl szép (olyan, mintha ott generálnánk ki egy node tartalmát), de adok hozzá egy javítást:

<?php
$lat = $vars['node']->location['latitude'];
$lon = $vars['node']->location['longitude'];
?>

Mindenesetre köszönöm a segítségedet! :)

0
0
aboros képe

off: a template_preprocess_node(&$variables) csak 6.x -től fölfelé létezik. (_pont_ arra való, hogy összeállítsd a tpl.php számára a változókat - "preprocess" ugye) drupalconon hallottam, hogy _pont_az_ a nem elegáns megoldás, hogy ahány ttípus, annyi node-.tpl.php, amikben nincs print $content .. (template butchering) hanem helyette újabban a template_preprocess_node() -ban "illik" összeállítani a $content.

on: nem tudom miért nem működik. próbáld ki azt, hogy a hook_nodeapi -val 'view' esetén módosítod a body -t úgy, hogy a $node->location alapján létrehozott gmap macro -t pakolod bele. működnie kell.

0
0

-
clear: both;

nevergone képe

Lehet, hogy hülyeség, de szerintem ha a template.php -ben összepakolok egy makrót, akkor azt már hiába nyomom ki a kimenetre, nem lesz ott a filter, amely az adott makró alapján összeállítsa a valós HTML kimenetet.

Aztán, ha mégsem így van, akkor valaki kijavít, és ma is tanulok valamit. :)

0
0
opera11 képe

Lehet, hogy más is válaszolta már, nem olvastam végig mindegyiket betüről, betüre.

Szóval VAN panels Drupal 6-ra: http://drupal.org/project/panels
Én is néztem, nemrégg fedeztem fel én is és rögtön be is üzemeltem, tesztelem..

0
0
Paal képe

Nem ilyenre gondolsz?

http://merenye.carp.hu/horgaszhelyek/bojlis/01

Ez (is) van a törzsben:
[gmap markers=yellow::46.08567764834433,17.698277235031128 |align=Center |zoom=15 |center=46.08716217305755,17.699275016784668 |width=570px |height=300px |id=bojlis01 |control=Small |type=Satellite]

Beviteli forma:
Full HTML. (Insert Google Map macro.Create a macro...)

Simán működik. Mondjuk ez D5-ös gmap+location modul.

0
0

--
Palócz Paal Pál, a drupal.hu admin csoportjának tagja
Ajánlott olvasmány: Eric Steven Raymond - Hogyan kérdezzünk okosan

aboros képe

csakazértis kipróbáltam... :)
viszont mégse a macro -s megoldást választottam, hanem inkább a tömböset.

template.php

function playground_preprocess_node(&$vars){
  $lat = $vars['node']->location['latitude']; //ez csak gépelési lustaságból
  $lon = $vars['node']->location['longitude'];
  $map = array(
    'id'=>'nodemap',
    'width'=>'100%',
    'latitude'=>$lat,
    'longitude'=>$lon,
    'zoom'=>15
  );
  $marker = array(
    'text' => t('Location'),
    'longitude' => $lon,
    'latitude' => $lat,
    #'markername' => "Light Blue",
  );
  $map['markers'][] = $marker;
  $map_full['#settings'] = $map;
  $vars['content'] .= theme('gmap', $map_full);
}

hevenyészett, figyelni kell, hogy van e egyátalán locative info, meg hogy teaser e vagy neme, szóval még lehet piszkálni bőven, de működik, bizonyítékot nézd meg a szemeiddel. ;)

ha szerinted úgy elegánsabb, csinálhatod azt is, hogy nem a $content -be rakod, hanem mondjuk egy $vars['map'] -ba és a .tpl.php -ban akkor meg print $map, de ez részletkérdés szeritnem.

remélem az elv legalább használható. ;)

0
0

-
clear: both;

nevergone képe

Te nagyon vágod ezt a template.php -ban való "ügyeskedést", én pedig azok közé tartozom, akik nagyon nem, és szerintem ezzel nem vagyok egyedül. Nem írnál erről egy kis szösszenetet ide a kézikönyvbe?

0
0
aboros képe

hu, értelmesen, használhatóan leírni a jóságot, az már egy külön szakma szerintem. nekem rengeteg idő lenne mire elégedett lennék a könyvlapommal. viszont egy dugon lehet ez a téma felőlem, szívesen elmondom amit erről tudok, meg amúgy a sminkelésről, meg azt én hogyan is csinálom és milyen kérdéseim vannak még ;) ha ez még valakit érdekel, akkor már ketten vagytok és az már elég, mint a planetnél ;)

amúgy ezt lehet tudni a preprocess függvényekről.
http://drupal.org/node/223430

0
0

-
clear: both;

Illyés Edit képe

remélem az elv legalább használható. ;)

A kód is használható, köszi.

Működőképes felállás:

  • Drupal 6.12
  • Location 6.x-3.x-dev (rc3)
  • Gmap 6.x-1.x-dev (rc1)

Az /admin/settings/location oldalon ki kell kapcsolni a megjelenítést, lehet, hogy a többieknek ezért nem működött:

Toggle location display:
x Disable the display of locations.

Nem kell kikapcsolni.

0
0
nevergone képe

Jó ez a kód (továbbra is), viszont nincs felkészítve arra, ha egy tartalom több jelölőt is tartalmaz. Mivel nem áll mindenki a helyzet magaslatán PHP -ben (néha én sem), ezért idemásolom a kódot, hátha valakinek jól jön:

<?php
function SMINKNEVE_preprocess_node(&$vars){
  $map = array(
    'id'=>'nodemap',
    'width'=>'100%',
    'latitude'=>$vars['node']->location['latitude'],
    'longitude'=>$vars['node']->location['longitude'],
    'zoom'=>15
  );
  for ($i = 0; $i < count($vars['node']->locations); $i++) {
    $marker = array(
      'text' => t('Location'),
      'longitude' => $vars['node']->locations[$i]['longitude'],
      'latitude' => $vars['node']->locations[$i]['latitude'],
      #'markername' => "Light Blue",
    );
    $map['markers'][] = $marker;
  }
  $map_full['#settings'] = $map;
  $vars['content'] .= theme('gmap', $map_full);
}
?>
0
0
aboros képe

több szempontból sem tökéletes, ez egy iránymutatás volt csak. (például azt sem figyeli, hogy létezik e egyátalán a gmap modul.. márpedig ha nem, akkor fatal error:)
további probléma vele, hogy ha egy uri-n több ilyen térképet tartalmazó node is szerepel (több térkép van ugyan azon az urin) akkor el fog törni, mert mindegyik térkép ugyan azt a mapid -t használja. hasznos tehát a mapid -hez hozzáfűzni a nodeid -t is.. emígy:

function SMINKNEVE_preprocess_node(&$vars){
  $map = array(
    'id'=>'nodemap-' . $vars['node']->nid,
    'width'=>'100%',
    'latitude'=>$vars['node']->location['latitude'],
    'longitude'=>$vars['node']->location['longitude'],
    'zoom'=>15
  );
  for ($i = 0; $i < count($vars['node']->locations); $i++) {
    $marker = array(
      'text' => t('Location'),
      'longitude' => $vars['node']->locations[$i]['longitude'],
      'latitude' => $vars['node']->locations[$i]['latitude'],
      #'markername' => "Light Blue",
    );
    $map['markers'][] = $marker;
  }
  $map_full['#settings'] = $map;
  $vars['content'] .= theme('gmap', $map_full);
}

persze így is csak akkor fog menni, ha ugyan azt a nodeot térképestül nem jeleníted meg kétszer egy oldalon belül. :)

0
0

-
clear: both;

gsuveg képe

mukodik a terkep, csak a markert nem jeleniti meg.
a tombben megkapja a gmap a marker pozicot, de valahogy egyik marker sem jelenik meg ;(

Minket fenti peldat kiprobaltam, egyikben sem jelenik meg a marker.
Van esetleg valakinek otlete ?

G.

0
0
nevergone képe

Ez a téma már eléggé idejétmúlt, ezért kérlek indíts újat a kérdésednek, ahova belinkeled ezt, és pontosan megadod az általad használt Drupal és modulok verziószámát, a tárhelyet vagy az oldal sajátosságait, esetleg egy közvetlen linket az oldaladhoz!
Köszönjük! :)

0
0