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?

 

Stefan Borchert
  • Geschäftsführung

Stefan ist Co-Geschäftsführer und zuständig für die Qualitätssicherung bei undpaul. Er beherrscht ver­schiedenste Programmiersprachen und hat ein Auge für das User Interface. Er ist Maintainer diverser Module, Mitarbeiter am Drupal Core und Mitglied der ersten Stunde der Drupal User Group Hannover. Acquia Certified Developer seit Juli 2014. Entgegen aller gängigen Vorurteile über Programmierer, zieht er Bewegung an der frischen Luft dem Sofa vor.