Gmaps – problem nezobrazi absolutne nic
- cujan
- Člen | 410
caute snazim sa pouzit gmaps na vlozenie mapy na stranku
v presenteri si vytvorim komponentu
<?php
public function createComponentMapa()
{
$mapa = new \Gmaps();
$mapa ->addMarker('Brno', 'Brno');
return $mapa;
}
?>
a problem je vtom, ze sqa mi na stranke nezobrazi nic…(ani ziadna chybova
hlaska…)
samozrejme v latte volam vytvorenie komponenty
{control mapa}
- cujan
- Člen | 410
aha ten som stiahol z githubu
<?php
<?php
/**
* This file is part of the Gmaps.
*
* Copyright (c) 2012 Vaclav Bohac
*/
use Gmaps\Marker,
Gmaps\Directions,
Gmaps\Polygon;
/**
* Gmaps makes creating Google Maps easy.
*
* @author Vaclav Bohac
*
* @property string $maptype
*/
class Gmaps extends Nette\ComponentModel\Container implements \ArrayAccess
{
/** Type of map. */
const TYPE_ROAD = 'ROADMAP',
TYPE_SAT = 'SATELLITE',
TYPE_HYB = 'HYBRID',
TYPE_TER = 'TERRAIN';
/** @var array */
private $defaultOptions = array(
'type' => self::TYPE_ROAD,
'width' => 600,
'height' => 600,
'controls' => FALSE,
'zoom' => 8,
'center' => 'Brno',
);
/** @var string */
private $mapType;
/**
* @param string
* @return Gmaps provides a fluent interface
* @throws InvalidArgumentException
*/
public function setMapType($maptype)
{
if (!is_string($maptype)) {
throw new InvalidArgumentException("MapType must be string.");
}
$this->maptype = $maptype;
return $this;
}
/**
* @return string
*/
public function getMapType()
{
return (string) $this->maptype ?: '';
}
/**
* @param string
* @param string|array
* @param string
* @param string|Html|Template
* @return Gmaps provides a fluent interface
*/
public function addMarker($name, $destination, $title = NULL, $info = NULL)
{
$this[$name] = new Marker($destination, $title, $info);
return $this;
}
/**
* @return Nette\Iterators\InstanceFilter
*/
public function getMarkers()
{
return $this->getComponents(True, '\Gmaps\Marker');
}
/**
* @param string
* @param string
* @param string
* @param string
* @return Gmaps provides a fluent interface
*/
public function setDirections($name, $origin, $destination, $travelMode = NULL)
{
$this[$name] = new Directions($origin, $destination, $travelMode);
return $this;
}
/**
* @return Nette\Iterators\InstanceFilter
*/
public function getDirections()
{
return $this->getComponents(True, '\Gmaps\Directions');
}
/**
* @param string
* @param array
* @return Gmaps provides a fluent interface
*/
public function addPolygon($name, array $points = array())
{
$this[$name] = new Polygon($points);
return $this;
}
/**
* @return Nette\Iterators\InstanceFilterIterator
*/
public function getPolygons()
{
return $this->getComponents(True, '\Gmaps\Polygon');
}
/**
* @return Nette\Templating\FileTemplate
*/
public function getTemplate()
{
$template = new Nette\Templating\FileTemplate;
$template->registerFilter(new Nette\Latte\Engine);
return $template;
}
/**
* @param array
*/
public function render($params = array())
{
$options = array_merge($this->defaultOptions, $params);
if (!array_key_exists("type", $params)) {
$options['type'] = $this->mapType ?: self::TYPE_ROAD;
}
$template = $this->template;
$template->setFile(__DIR__ . '/template.phtml');
$template->basePath = Nette\Environment::getHttpRequest()->getUrl()->basePath;
$template->markers = $this->markers;
$template->directions = $this->directions;
$template->polygons = $this->polygons;
$template->options = $options;
$template->render();
}
/**
* Implementing ArrayAccess setter.
* @param string
* @param Nette\ComponentModel\IComponent
*/
public function offsetSet($name, $component)
{
$this->addComponent($component, $name);
}
/**
* Implementing ArrayAccess getter.
* @return Nette\ComponentModel\IComponent
*/
public function offsetGet($name)
{
return $this->getComponent($name, True);
}
/**
* Tests if component exists.
* @param string
* @return bool
*/
public function offsetExists($name)
{
return $this->getComponent($name, False) !== NULL;
}
/**
* Remove component.
* @param string
*/
public function offsetUnset($name)
{
$component = $this->getComponent($name, False);
if ($component !== NULL) {
$this->removeComponent($component);
}
}
}
?>
- cujan
- Člen | 410
ale ono som rpave pozeral zdrojovy kod vygenerovanej stranky a ten script sa tam generuje…len…
zdroj
https://github.com/wopice/Gmaps
Editoval cujan (18. 12. 2012 13:14)
- jiri.pudil
- Nette Blogger | 1032
zdroj
Díky, už jsem si to stihnul vygooglit… :)
Konzole nikde nehlásí chybu v JS? A ten skript máš tam, kde má být,
tj. {$basePath}js/gmaps.min.js
?
- jiri.pudil
- Nette Blogger | 1032
podla pokynov …
Takže podle tohoto?
- copy gmaps source files to your component folder in your project
$ cp -r ./gmaps ~/www/<your-nette-project>/app/components/
Ovšem součástí té komponenty je JS soubor. Ten musí být ve veřejně přístupné části webu (což by složka app v žádném případě být neměla).
- wopice
- Člen | 21
Opravil jsem narychlo aspoň základní funkce Gmaps (vytvoření mapy, přídání značky). Zkuste aktualizovat na novější verzi. Nestihnu teď dopoledne opravit vše (chybí directions a polylines). Chyby a náměty na zlepšení pokud možno reportujte do issues.
Prosím, nezapomeňte překopírovat znovu gmap.js
do adresáře
www/js
.
- wopice
- Člen | 21
cujan napsal(a):
skopcil som a zas sa mi mapa nezobrazila :-) uz ani seda oblast ale mozno niekde je to moja chyba…idem hladat…
Zapomněl jsem zmínit, že Gmaps je nyní závislé na jQuery. Ve chvíli, kdy se Gmaps spouští, ještě jQuery nemusí být načtené, takže je potřeba script tag s jQuery přesunout do hlavičky stránky.
- cujan
- Člen | 410
ups tak jquery ja nenacitavam asi vobec :-) ako nato? :) dikes
ups tu je celkom dobry navod pre tych co to nevedia tak ako ja :)
http://www.itnews.sk/…ework-jquery
Editoval cujan (19. 12. 2012 12:20)
- wopice
- Člen | 21
cujan napsal(a):
Caute, potrebujem cez Gmaps vlozit znacku, a to tak, ze si z db vytiahnem GPS suradnice, ako nato?
presnejsie, viem ze znacka sa vklada v presenteri, len mi nie je jasne ako tam natiahnem gps suradnice…
Asi nejkratší (byť zcela ignoruje existenci modelu) by bylo:
class HomepagePresenter extends BasePresenter
{
private $places;
public function beforeRender()
{
$this->places = $this->context->places; // Nette\Database\Table\Selection
}
public function createComponentMap()
{
return new Gmaps\Gmaps();
}
public function renderDefault()
{
$map = $this['map'];
foreach ($this->places as $place) {
$map->addMarker($place->id, array($place->latitude, $place->longitude), $place->name);
}
}
}
- jiri.pudil
- Nette Blogger | 1032
Jestli je „mapa“ instancí Gmaps z doplňku od @wopice, pak by asi mělo fungovat něco takového:
{control mapa, ['center' => ['lat' => $nalezisko->zemepisnaSirka, 'lng' => $nalezisko->zemepisnaDlzka]]}
- wopice
- Člen | 21
cujan napsal(a):
resp. tak sa spytam takto..ako sa daju menit defaultOptions v presenteri?
vdaka
Co se středu mapy týče, tak se dá nastavit pomocí volání metody setCenter()
:
Např.:
$map->setCenter('Brno');
// ... nebo ...
$map->setCenter(49.9048, 16.447);