js-markerwithlabel
GeoTools
js-markerwithlabel | GeoTools | |
---|---|---|
1 | 1 | |
72 | 1,357 | |
- | 0.3% | |
9.1 | 5.1 | |
9 days ago | about 2 months ago | |
TypeScript | PHP | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
js-markerwithlabel
-
Store values based on geographic data calculation (which polygon is a point within?)
So this is something doable, but I'd say it required some advanced drupal chops and a few prior geo/mapping skills to know what each module does and how they work with each other. I have done this kinda thing since Drupal 6 and it still took me a few weeks of work to go from a few CSVs to a beautiful map with facets, per type styled polygons/points with nice labels, clustering, infowindows...
GeoTools
-
Store values based on geographic data calculation (which polygon is a point within?)
// Loop on all loaded zones_entities /* @var $zone_geofield \Drupal\geofield\Plugin\Field\FieldType\GeoFieldItem */ $zone_geofield = $your_zone_entity->get('field_your_geofield')->getValue(); /* @var \Drupal\geofield\GeoPHP\GeoPHPInterface $geo_php_wrapper */ $geo_php_wrapper = \Drupal::service('geofield.geophp'); // or inserted via DI /* @var \Geometry$polygon*/ $polygon = $geo_php_wrapper->load($zone_geofield->value); /* @var $entity_geofield \Drupal\geofield\Plugin\Field\FieldType\GeoFieldItem */ $entity_geofield = $your_current_entity->get('field_your_geofield')->getValue(); $point = $geo_php_wrapper->load($entity_geofield->value); if( geoPHP::geosInstalled() ) { $in_zone = $polygon->contains($point); } else { // https://github.com/thephpleague/geotools#polygon $geotools_polygon = new \League\Geotools\Polygon\Polygon( $polygon->asArray() ); $geotools_point = \League\Geotools\Coordinate\Coordinate( $point->asArray() ); $in_zone = $geotools_polygon->pointInPolygon( $geotools_point ); } if( $in_zone ) { // Do things like filling a reference field $entity->set('field_ref_' . $your_zone_entity->bundle()', $your_zone_entity->id() ); }
What are some alternatives?
vueuse - Collection of essential Vue Composition Utilities for Vue 2 and 3 [Moved to: https://github.com/vueuse/vueuse]
PHPGeo - Simple Yet Powerful Geo Library for PHP
js-markerclusterer - Create and manage clusters for large amounts of markers
GeoCoder - The most featured Geocoder library written in PHP.
js-api-loader - Load the Google Maps JavaScript API script dynamically.
GeoJSON - GeoJSON implementation for PHP
php-polylabel - PHP port of https://github.com/mapbox/polylabel
Rinvex Country - Rinvex Country is a simple and lightweight package for retrieving country details with flexibility. A whole bunch of data including name, demonym, capital, iso codes, dialling codes, geo data, currencies, flags, emoji, and other attributes for all 250 countries worldwide at your fingertips.
vueuse - Collection of essential Vue Composition Utilities for Vue 2 and 3
OpenCage Data Geocoding Library for PHP - PHP library to access the OpenCage geocoding API
froebel - A strictly typed utility library.