Wie man programmatisch eine Karte mit Leaflet erstellt

Manchmal möchte mal einfach und schnell eine Karte zu einem Inhalt oder Block hinzufügen, ohne großartig etwas konfigurieren zu müssen. Man möchte einfach nur die Karte anzeigen und fertig.
Glücklicherweise ist das ziemlich einfach mit Leaflet zu bewerkstelligen.

Nehmen wir mal an, man hat die Werte für den Ort und für das Land und möchte dies "Adresse" auf der Karte anzeigen.
Dazu muss man zuerst Leaflet und Geocoder installieren und dann diese Funktion zum Erzeugen der Karte verwenden:

  1. <?php
  2. /**
  3.  * Generate a simple map with a location pointer.
  4.  *
  5.  * @param string $location
  6.  *   Location to use (for example the address).
  7.  * @param string $country
  8.  *   Name of the country to use.
  9.  *
  10.  * @return string
  11.  *   The rendered map.
  12.  */
  13. function mysimplemap_map_create($location, $country) {
  14.   $map = '';
  15.   // Join the address parts to something geocoder / google maps understands.
  16.   $address = sprintf('%s, %s', $location, $country);
  17.  
  18.   // Try to create a geographic point out of the given location values.
  19.   if ($geo_point = geocoder('google', $address)) {
  20.     // Create a JSON equivalent to the point.
  21.     $geo_json = $geo_point->out('json');
  22.     // Get map implementation provided by http://drupal.org/project/leaflet_googlemaps.
  23.     $map = leaflet_map_get_info('google-maps-roadmap');
  24.     // Set initial zoom level.
  25.     $map['settings']['zoom'] = 16;
  26.    
  27.     // Decode the JSON string.
  28.     $geo_data = json_decode($geo_json);
  29.     // Create settings for the map.
  30.     $map_features = array(
  31.       array(
  32.         'type' => 'point',
  33.         'lon' => $geo_data->coordinates[0],
  34.         'lat' => $geo_data->coordinates[1],
  35.       ),
  36.     );
  37.     // Render the map with a fixed height of 250 pixels.
  38.     $map = leaflet_render_map($map, $features, '250px');
  39.   }
  40.  
  41.   return $map;
  42. }
  43. ?>

Einfach, oder?