Inicializace GoogleMap API
- Syntey
- Člen | 15
Zdravím, mohl by mi někdo pomoct s tímhle addonem https://forum.nette.org/…v-komponente?
Konkrétně jde mi o tu část komplexního řešení napsaného v dokumentaci
zde https://github.com/…/en/index.md
Použití vypadá jednoduše, ale furt nemůžu přijít na inicializaci mapy,
aby se mi zobrazila
Kód mám následovně
class MapPresenter extends BasePresenter {
private $locationsRepository = null;
private $map;
private $markers;
public function __construct(\Oli\GoogleAPI\IMapAPI $mapApi, \Oli\GoogleAPI\IMarkers $markers)
{
$this->map = $mapApi;
$this->markers = $markers;
}
public function createComponentMap() {
$map = $this->map->create();
$map->setCoordinates(array(50.250718,14.583435))
->setZoom(4)
->setType(MapAPI::TERRAIN);
$markers = $this->markers->create();
$markers->fitBounds();
return $map;
}
}
V latte:
{control map}
EDIT: Ve zdrojáku mám toto
<div class="googleMapAPI" data-map="{"position":[50.250718,14.583435],"height":"400px","width":"400px","zoom":4,"type":"TERRAIN","scrollable":true,"key":"klic","bound":null,"cluster":null,"clusterOptions":null,"waypoint":null}" data-basePath="" data-markersFallback="/map/?do=map-markers"></div>
Díky předem!
Editoval Syntey (20. 12. 2017 1:20)
- BrunoPuzjak
- Člen | 7
Nedávno jsem to řešil v jednom projektu. Taky jsem si nějakou dobu lámal hlavu a potom jsem to zkusil dát na testovací doménu.
Ty mapy potřebují mít kompletní url, takže na lokálu s adresou
/map/?do=map-markers
ti to myslím nepojede.
- n.u.r.v.
- Člen | 485
Ahoj, já tento plugin používám v několika projektech a vše mi funguje včetně vlastních ikon a popisků… V rychlosti ti popíšu jak to mám já:
config.neon:
extensions:
map: Oli\GoogleAPI\MapApiExtension
map:
key: tady_je_vygenerovany_key_bez_uvozovek
Presenter:
use \Oli\GoogleAPI\TMap;
use \Oli\GoogleAPI;
...
...
private $map;
private $markers;
function __construct(\Oli\GoogleAPI\IMapAPI $mapApi, \Oli\GoogleAPI\IMarkers $markers) {
$this->map = $mapApi;
$this->markers = $markers;
}
public function createComponentMap() {
$map = $this->map->create();
$map->setProportions('100%', '600px');//rozmery
$map->setCoordinates(array(50.123456, 15.123456))
->setZoom(13)
->setType(GoogleAPI\MapAPI::ROADMAP); //TERRAIN
$markers = $this->markers->create();
$markers->fitBounds(true);
$markersFromDb = TADY SI NACTES DATA (POPISKY, LNG,LAT,IKONY,APOD. - viz niže)
if ($markersFromDb != FALSE) {
if (count($markersFromDb) > 30) {
$markers->isMarkerClusterer();
}
foreach ($markersFromDb as $marker) {
$markers->addMarker(array($marker['lat'], $marker['lng']), GoogleAPI\Markers::DROP)
->setMessage('<h1 class="map_description_title">' . $marker['map_title'] . '</h1>')
->setIcon($marker['icon']);
}
}
$map->addMarkers($markers);
return $map;
}
Struktura dat pro mapu:
$result[] = array("lat" => "HODNOTA", "lng" => "HODNOTA", "map_title" => "NADPIS_MARKERU", "icon" => "/www/img/markers/marker.png");
šablona:
<div>
{control map}
</div>
{*myslím že to musí být až pod tím div s mapou*}
<script type="text/javascript" src="{$basePath}/www/js/googleMapAPI.js"></script>
<script type="text/javascript" src="{$basePath}/www/js/googleMapApiLoader.js"></script>
<script type="text/javascript" src="{$basePath}/www/js/markerclusterer.js"></script>
hlavně nezapomeň na $map->setProportions(‚100%‘, ‚600px‘); – myslím že když jsem to nenastavil tak mapa měla velikost 0…
Editoval n.u.r.v. (8. 2. 2018 13:59)
- GEpic
- Člen | 566
Syntey napsal(a):
Podařilo se někomu nastavit výšku mapy na 100%? Mapa se totiž zobrazí jenom když tam je fixní hodnota
100% čeho?.. obrazovky, nadřazeného prvku / elementu?
jestli obrazovky, tak můžeš zkusit
$map->setProportions("100%", "100vh");
Editoval GEpic (6. 4. 2018 2:51)