GoogleMap – integrace Google map do Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
potapnik
Člen | 127
+
+1
-

GoogleMap – verze v0.1.1 (repo | docs)

  • přechod na data vrstvu s GeoJSON daty (viz dokumentace na Githubu)
  • využívá vlastní jednoduchou třídu GeoJSON, která bude postupně rozšiřována
  • používá data atributy pro konfiguraci elementu mapy, protože inline javascript je ee.
  • infowindows k jednotlivým značkám na mapě, zobrazuje automaticky, pokud má značka vlastnost content, pokud má vlastnost href, doplní nakonec infowindow odkaz :-)
Požadavky
  • Nette >= v2.2.0 (na nižších netestuji anžto je nepoužívám)
  • JQuery >= v1.8.0 (dtto)
  • george-oakling/geojson = v0.1.0
Instalace aktuální verze, zprovoznění a základní nastavení

Nejlépe přes composer, tedy

composer require george-oakling/googlemap:v0.1.1

Použití v presenteru:

<?php

use GoogleMap;

class MapPresenter
{
	public function createComponentGoogleMap()
	{
		$gmap = new GoogleMap\GoogleMapComponent();
		$gmap->initialCenterLatitude = 50.083;
		$gmap->initialCenterLongitude = 14.423;
		$gmap->initialZoom = 12;
		$gmap->key = 'AIzA';
		return $gmap;
	}
}
?>

Od verze v0.1.1 používá komponenta GeoJSON (standard, více popsaný zde: http://geojson.org/) pro zobrazování značek (markers) na mapě. Úplně nejlepší, jak zjistit, jak to funguje je podívat se na zdrojový kód SampleFeatureCollectionProvider.php, která je ve zdrojácích komponenty, případně přečíst dokumentaci (taktéž součástí zdrojáků). Takový FeatureCollection provider pak navěsíme na komponentu úplně jednodušše v presenteru takto:

<?php

$fcProvider = new GoogleMap\SampleFeatureCollectionProvider();
$gmap->setFeatureCollectionProvider($fcProvider);

?>

V šabloně pak komponentu zapisujeme takto (pokud máme JQuery nalinkované v hlavičce nebo před mapou)

{control googleMap}

Pokud používáme něco jako block scripts, tak na místo, kde chceme mapu, dosadíme:

{control googleMap:HTML}

A block scripts renderujeme:

{block scripts}
	{include parent}
	{control googleMap:JS}
{/block}

Nicméně, chytří používají webloader od Honzy Marka, a tomu stačí předhodit soubor google.map.js z adresáře komponenty hned za inkludované JQuery a renderovat v šabloně jenom googleMap:HTML.

Editoval potapnik (16. 6. 2014 10:24)

potapnik
Člen | 127
+
0
-

Aktualizován první příspěvek – nová verze, nové funkce.