2017 © Pedro Peláez
 

cakephp-plugin cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

image

chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  • Sunday, May 6, 2018
  • by chris48s
  • Repository
  • 2 Watchers
  • 4 Stars
  • 175 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 5 Versions
  • 17 % Grown

The README.md

Build Status Coverage Status, (*1)

CakePHP GeoDistance Plugin

A CakePHP 3 Behavior for querying geocoded data by distance.

CakePHP-GeoDistance is a CakePHP 3 behavior for querying geocoded data based on cartographic distance using the spherical cosine law. It is great for 'find my nearest X' or 'find Y near me' type queries. If your database doesn't already have latitude/longitude co-ordinates attached to your geographic data, you can add them using a geocoding plugin. Try this one., (*2)

Installation

Install from packagist using composer. Add the following to your composer.json:, (*3)

"require": {
    "chris48s/cakephp-geodistance": "^2.0.0"
}

and run composer install or composer update, as applicable., (*4)

Supported databases

Only MySQL and Postgres are supported., (*5)

Usage

Loading the plugin

Add the code Plugin::load('Chris48s/GeoDistance'); to your bootstrap.php., (*6)

Using the Behavior

Add the behavior in your table class., (*7)

<?php
namespace App\Model\Table;

use Cake\ORM\Table;

class MyTable extends Table
{

    public function initialize(array $config)
    {
        parent::initialize($config);
        $this->addBehavior('Chris48s/GeoDistance.GeoDistance');
    }
}

Configuration

By default, the behavior assumes your table contains columns called latitude and longitude, and you want to perform queries in miles. These can be changed though. Simply pass an array of options when attaching the behavior:, (*8)

<?php
namespace App\Model\Table;

use Cake\ORM\Table;

class MyTable extends Table
{

    public function initialize(array $config)
    {
        parent::initialize($config);
        $this->addBehavior('Chris48s/GeoDistance.GeoDistance', [
            'latitudeColumn' => 'lat',
            'longitudeColumn' => 'lng',
            'units' => 'km'
        ]);
    }
}

Supported units are miles or kilometres., (*9)

Querying data

Having added the behavior to a table class, you now have access to the query method find('bydistance'), which you can use to find database records within radius of a given point:, (*10)

<?php

use Cake\ORM\TableRegistry;

$myTable = TableRegistry::get('MyTable');

$options = [
    'latitude' => 51.3984830139,
    'longitude' => -0.236298886484,
    'radius' => 10
];
$query = $myTable
    ->find('bydistance', $options)
    ->select(['address', 'lat', 'lng']);

latitude, longitude and radius are required parameters. If required parameters are missing or invalid, an exception of class GeoDistanceInvalidArgumentException will be thrown., (*11)

You can also pass additional conditions or parameters to the query and override the default for 'units', for example:, (*12)

<?php

use Cake\ORM\TableRegistry;

$myTable = TableRegistry::get('MyTable');

$options = [
    'latitude' => 51.3984830139,
    'longitude' => -0.236298886484,
    'radius' => 10,
    'units' => 'kilometres',
    'conditions' => [ 'active' => 1 ]
];
$query = $myTable
    ->find('bydistance', $options)
    ->select(['address', 'lat', 'lng']);

The method find('bydistance') returns a CakePHP query object, so you can chain additional methods on to this (e.g: ->order(), ->limit(), etc)., (*13)

Reporting Issues

If you have any issues with this plugin then please feel free to create a new Issue on the GitHub repository. This plugin is licensed under the MIT License., (*14)

The Versions

06/05 2018

dev-master

9999999-dev https://github.com/chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar chris48s

cakephp distance geo geography

06/05 2018

2.0.0

2.0.0.0 https://github.com/chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar chris48s

cakephp distance geo geography

18/04 2018

dev-coveralls

dev-coveralls https://github.com/chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar chris48s

cakephp distance geo geography

30/08 2017

1.1.0

1.1.0.0 https://github.com/chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar chris48s

cakephp distance geo geography

09/01 2017

1.0.0

1.0.0.0 https://github.com/chris48s/cakephp-geodistance

CakePHP 3 model behavior for querying geocoded data based on distance

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar chris48s

cakephp distance geo geography