Inicializace GoogleMap API

Syntey
Člen | 15
+
0
-

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)

Syntey
Člen | 15
+
0
-

Nikdo neví?

Ondřej Kubíček
Člen | 494
+
0
-

a třeba chyba v konzoli není žádná? máš tam nalinkované ty 2 js soubory?

BrunoPuzjak
Člen | 7
+
0
-

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
+
+3
-

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)

Syntey
Člen | 15
+
0
-

Parádní, díky moc. Pomohlo řešení od n.u.r.v. :)

n.u.r.v.
Člen | 485
+
0
-

Syntey napsal(a):

Parádní, díky moc. Pomohlo řešení od n.u.r.v. :)

nz, ještě jsem to doplnil… :-)

Syntey
Člen | 15
+
0
-

Podařilo se někomu nastavit výšku mapy na 100%? Mapa se totiž zobrazí jenom když tam je fixní hodnota

Editoval Syntey (5. 4. 2018 20:30)

GEpic
Člen | 566
+
+1
-

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)