src/Charcoal/Admin/Widget/CollectionMapWidget.php
public function mapObjects()
    {
        if ($this->mapObjects === null) {
            $objType = $this->objType();
            if (!$objType) {
                throw new UnexpectedValueException(sprintf(
                    '%1$s cannot create collection map. Object type is not defined.',
                    get_class($this)
                ));
            }

            $loader = $this->collectionLoader();
            $loader->setModel($this->proto());

            $collectionConfig = $this->collectionConfig();
            if (is_array($collectionConfig) && !empty($collectionConfig)) {
                unset($collectionConfig['properties']);
                $loader->setData($collectionConfig);
            }

            $callback = function(&$obj) {
                $obj->mapInfoboxTemplate = $this->infoboxTemplate();

                if ($this->latProperty() && $this->latProperty()) {
                    $obj->mapShowMarker = true;
                    $obj->mapLat = $this->getPropertyValue($obj, $this->latProperty());
                    $obj->mapLon = $this->getPropertyValue($obj, $this->lonProperty());

                    if (!$obj->mapLat || !$obj->mapLon) {
                        $obj = null;
                    }
                } else {
                    $obj->mapShowMarker = false;
                }

                if ($this->pathProperty()) {
                    $mapPath = $this->getPropertyValue($obj, $this->pathProperty());
                    if ($mapPath) {
                        $obj->mapShowPath = true;
                        // Same type of coords.
                        $obj->mapPath = $this->formatPolygon($mapPath);

                        if (!$obj->mapPath) {
                            $obj = null;
                        }
                    } else {
                        $obj->mapShowPath = false;
                    }
                }

                if ($this->polygonProperty()) {
                    $mapPolygon = $this->getPropertyValue($obj, $this->polygonProperty());
                    if ($mapPolygon) {
                        $obj->mapShowPolygon = true;
                        $obj->mapPolygon = $this->formatPolygon($mapPolygon);

                        if (!$obj->mapPolygon) {
                            $obj = null;
                        }
                    } else {
                        $obj->mapShowPolygon = false;
                    }
                }
            };

            $loader->setCallback($callback->bindTo($this));

            $this->mapObjects = $loader->load();
        }

        foreach ($this->mapObjects as $obj) {
            $GLOBALS['widget_template'] = $obj->mapInfoboxTemplate;
            yield $obj;
            $GLOBALS['widget_template'] = '';
        }
    }
public function mapObjects()
    {
        if ($this->mapObjects === null) {
            $objType = $this->objType();
            if (!$objType) {
                throw new UnexpectedValueException(sprintf(
                    '%1$s cannot create collection map. Object type is not defined.',
                    get_class($this)
                ));
            }

            $loader = $this->collectionLoader();
            $loader->setModel($this->proto());

            $collectionConfig = $this->collectionConfig();
            if (is_array($collectionConfig) && !empty($collectionConfig)) {
                unset($collectionConfig['properties']);
                $loader->setData($collectionConfig);
            }

            $callback = function(&$obj) {
                $obj->mapInfoboxTemplate = $this->infoboxTemplate();

                if ($this->latProperty() && $this->latProperty()) {
                    $obj->mapShowMarker = true;
                    $obj->mapLat = $this->getPropertyValue($obj, $this->latProperty());
                    $obj->mapLon = $this->getPropertyValue($obj, $this->lonProperty());

                    if (!$obj->mapLat || !$obj->mapLon) {
                        $obj = null;
                    }
                } else {
                    $obj->mapShowMarker = false;
                }

                if ($this->pathProperty()) {
                    $mapPath = $this->getPropertyValue($obj, $this->pathProperty());
                    if ($mapPath) {
                        $obj->mapShowPath = true;
                        // Same type of coords.
                        $obj->mapPath = $this->formatPolygon($mapPath);

                        if (!$obj->mapPath) {
                            $obj = null;
                        }
                    } else {
                        $obj->mapShowPath = false;
                    }
                }

                if ($this->polygonProperty()) {
                    $mapPolygon = $this->getPropertyValue($obj, $this->polygonProperty());
                    if ($mapPolygon) {
                        $obj->mapShowPolygon = true;
                        $obj->mapPolygon = $this->formatPolygon($mapPolygon);

                        if (!$obj->mapPolygon) {
                            $obj = null;
                        }
                    } else {
                        $obj->mapShowPolygon = false;
                    }
                }
            };

            $loader->setCallback($callback->bindTo($this));

            $this->mapObjects = $loader->load();
        }

        foreach ($this->mapObjects as $obj) {
            $GLOBALS['widget_template'] = $obj->mapInfoboxTemplate;
            yield $obj;
            $GLOBALS['widget_template'] = '';
        }
    }
public function mapObjects ( ) { if ( $ this -> mapObjects === null ) { $ objType = $ this -> objType ( ) ; if ( ! $ objType ) { throw new UnexpectedValueException ( sprintf ( '%1$s cannot create collection map. Object type is not defined.' , get_class ( $ this ) ) ) ; } $ loader = $ this -> collectionLoader ( ) ; $ loader -> setModel ( $ this -> proto ( ) ) ; $ collectionConfig = $ this -> collectionConfig ( ) ; if ( is_array ( $ collectionConfig ) && ! empty ( $ collectionConfig ) ) { unset ( $ collectionConfig [ 'properties' ] ) ; $ loader -> setData ( $ collectionConfig ) ; } $ callback = function ( & $ obj ) { $ obj -> mapInfoboxTemplate = $ this -> infoboxTemplate ( ) ; if ( $ this -> latProperty ( ) && $ this -> latProperty ( ) ) { $ obj -> mapShowMarker = true ; $ obj -> mapLat = $ this -> getPropertyValue ( $ obj , $ this -> latProperty ( ) ) ; $ obj -> mapLon = $ this -> getPropertyValue ( $ obj , $ this -> lonProperty ( ) ) ; if ( ! $ obj -> mapLat || ! $ obj -> mapLon ) { $ obj = null ; } } else { $ obj -> mapShowMarker = false ; } if ( $ this -> pathProperty ( ) ) { $ mapPath = $ this -> getPropertyValue ( $ obj , $ this -> pathProperty ( ) ) ; if ( $ mapPath ) { $ obj -> mapShowPath = true ; // Same type of coords. $ obj -> mapPath = $ this -> formatPolygon ( $ mapPath ) ; if ( ! $ obj -> mapPath ) { $ obj = null ; } } else { $ obj -> mapShowPath = false ; } } if ( $ this -> polygonProperty ( ) ) { $ mapPolygon = $ this -> getPropertyValue ( $ obj , $ this -> polygonProperty ( ) ) ; if ( $ mapPolygon ) { $ obj -> mapShowPolygon = true ; $ obj -> mapPolygon = $ this -> formatPolygon ( $ mapPolygon ) ; if ( ! $ obj -> mapPolygon ) { $ obj = null ; } } else { $ obj -> mapShowPolygon = false ; } } } ; $ loader -> setCallback ( $ callback -> bindTo ( $ this ) ) ; $ this -> mapObjects = $ loader -> load ( ) ; } foreach ( $ this -> mapObjects as $ obj ) { $ GLOBALS [ 'widget_template' ] = $ obj -> mapInfoboxTemplate ; yield $ obj ; $ GLOBALS [ 'widget_template' ] = '' ; } }
Return all the objs with geographical information

@throws UnexpectedValueException If the object type of the colletion is missing.
@return Collection
Return all the objs with geographical information