Google Map In PHP

Geocoding with PHP and the Google Maps API

Вся документация по использованию Google Maps API находится по этому адресу
Первое что необходимо сделать для использования Google Maps API это создать API ключ для вашего сайта. По данному ключу будут идентифицированы все ваши запросы к этому API. Вы можете получить данный ключ, согласившись с правилами использования и введя адрес сайта на странице
В настоящее время максимальное количество запросов к geocoder ограничено и составляет 15000 в день. Но вы можете кэшировать ответы geocoder.
Получив ключ, вы можете обращаться к geocoder. Документацию по использованию geocoder можно найти по адресу

Осуществление запросов к Geocoder

  • q – адрес, координаты которого надо определить
  • key – ключ Google Maps API
  • output – формат результата (json, xml, kml или csv)

Разбор ответа Geocoder

После отправки запроса к geocoder, вы получаете ответ в том формате, который указали. Например, если указанный адрес это адрес Белового Дома, то мы получим в ответ следующий XML-документ:

  • name: Строка адреса, которую мы передаем geocoder
  • Status: Статус ответа, по которому мы можем легко понять что произошло. Далее описание различных возможных состояний:
    • 200: Successful request (хотя бы одно место по введенной строке найдено)
    • 400: Bad request (сервер не понял запрос)
    • 500: Server error (Внутренняя ошибка)
    • 601: Missing query. Отсутствует параметр q или передана пустая строка
    • 602: Unknown address. Ничего не найдено по введенной строке
    • 603: Unavailable address. Переданный адрес отсутствует или не может быть показан из-за юридических или контрактных соображений
    • 610: Неверный ключ Google Maps API
    • 620: Сделано слишком много запросов, используя данный ключ
    • 0: Unknown
    • 1: Country
    • 2: Region
    • 3: Sub-region
    • 4: Town
    • 5: Postcode
    • 6: Street
    • 7: Intersection
    • 8: Address

    Доступ к данным Geocoder используя SimpleXML
    Для разбора полученного XML мы будем использовать SimpleXML, расширение которое делает работу с XML в PHP достаточно легкой. SimpleXML встроен в PHP, начиная с PHP 5.
    Для прочтения данных XML, необходимо инициализировать объект SimpleXMLElement, передав в его конструктор строку XML, которую мы хотим разобрать.

    Создав объект класса SimpleXMLElement, мы можем получить доступ ко всем элементам XML-строки, как будто это обыкновенные свойства объекта. Например, можно получить досуп к статусу ответа, используя следующий код:

    Надо отметить, что тип $xml->Response->Status->code — SimpleXMLElement. Поэтому, необходимо для использования выполнить приведение типов к строке или числу.

    $xml = new SimpleXMLElement($geocoderResponse);
    $status = (int) $xml->Response->Status->code;
    if ($status == 200)

    Сейчас мы знает как читать данные XML, но некоторые элементы содержат атрибуты. Следующий пример показывает как получить доступ к таким атрибутам.

    $xml = new SimpleXMLElement($geocoderResponse);
    foreach ($xml->Response->Placemark as $placemark) $accuracy = (int) $placemark->AddressDetails[‘Accuracy’];
    ($accuracy == 8) <. >
    >

    • Geocoder: Этот класс будет сипользован для работы с geocoder (направления запросов, получения и разбора ответов).
    • Placemark: Этот класс будет содержать места, возвращенные geocoder.
    • Point: В данном классе будут находится координаты найденных мест.

    class Geocoder
    public static $url = ‘http://maps.google.com/maps/geo’;
    const G_GEO_SUCCESS = 200;
    const G_GEO_BAD_REQUEST = 400;
    const G_GEO_SERVER_ERROR = 500;
    const G_GEO_MISSING_QUERY = 601;
    const G_GEO_MISSING_ADDRESS = 601;
    const G_GEO_UNKNOWN_ADDRESS = 602;
    const G_GEO_UNAVAILABLE_ADDRESS = 603;
    const G_GEO_UNKNOWN_DIRECTIONS = 604;
    const G_GEO_BAD_KEY = 610;
    const G_GEO_TOO_MANY_QUERIES = 620;
    protected $_apiKey;
    public function __construct($key)
    $this->_apiKey = $key;
    >
    >

    Как было описано выше, мы реализуем метод lookup(), возвращающий массив объектов типа Placemark. Для получения ответа от geocoder мы напишем метод под названием performRequest().
    Метод performRequest() будет принимать строку адреса в качестве первого аргумента и тип возвращаемых данных в качестве второго аргумента.
    Этот метод используем функции Curl для осуществления HTTP-запросов. Для получения ответов от сервера параметр CURLOPT_RETURNTRANSFER должен быть установлен в true.

    class Geocoder
    public function performRequest($search, $output = ‘xml’)
    $url = sprintf(«%s?q=%s&output=%s&key=%s&oe=utf-8», self::$url, urlencode($search), $output,$this->_apiKey);
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
    >
    >

    Сейчас мы вплотную займемся реализацией метода lookup() В начале мы получим ответ от сервера используя метод performRequest(), создадим объект класса SimpleXMLELement. Далее мы прочитаем возвращенный сервером статус запроса. Сингналом о нормальном запросе будет являться статус G_GEO_SUCCESS, G_GEO_UNKNOWN_ADDRESS или G_GEO_UNAVAILABLE_ADDRESS. Последние два значения покажут что не найдено указанных мест, в данном случае будет возвращен пустой массив.
    Если код статуса G_GEO_SUCCESS, мы в цикле будем обрабатывать найденные места и создадим для каждого объекты типа Placemark… Мы напишем метод FromSimpleXml() для создания объекта класса Placemark.
    Для всех других кодов статуса мы будем создавать исключение.

    class Geocoder
    public function lookup($search)
    $response = $this->performRequest($search, «xml»);
    $xml=new SimpleXMLElement($response);
    $status = (int) $xml->Response->Status->code;

    switch ($status)
    case self::G_GEO_SUCCESS:
    require_once(«Placemark.php»);
    $placemarks = array();
    foreach ($xml->Response->Placemark as $placemark)
    $placemarks[] = Placemark::FromSimpleXml($placemark);
    return $placemarks;
    case self::G_GEO_UNKNOWN_ADDRESS:
    case self::G_GEO_UNAVAILABLE_ADDRESS:
    return array();
    default:
    throw new Exception(sprintf(«Google Geo error %d occurred”, $status));
    >
    >
    >

    Это полный код класса Geocoder. Если вы хотите использовать функцию performRequest(), вы можете это сделать, однако сейчас необходимо реализовать класс Placemark до использования метода lookup().

    require_once(«Geocoder.php»);
    $address = «1600 Pennsylvania Ave Washington DC»;
    $geocoder = new Geocoder(‘your key’);
    $xml = $geocoder->performRequest($address, «xml»);
    $json = $geocoder->performRequest($address, «json»);
    $csv = $geocoder->performRequest($address, «csv»);

    Создание класса Placemark

    • Широта и долгота места (используя класс Point)
    • Форматированный адрес, возвращенный от geocoder
    • Точность определения места

    class Placemark
    const ACCURACY_UNKNOWN = 0;
    const ACCURACY_COUNTRY = 1;
    const ACCURACY_REGION = 2;
    const ACCURACY_SUBREGION = 3;
    const ACCURACY_TOWN = 4;
    const ACCURACY_POSTCODE = 5;
    const ACCURACY_STREET = 6;
    const ACCURACY_INTERSECTION = 7;
    const ACCURACY_ADDRESS = 8;
    protected $_point;
    protected $_address;
    protected $_accuracy;
    >

    Google Maps API не определяет именованные константы для точности определения.
    Далее идет определение так называемых сеттеров и геттеров, я пропускаю комментарии автора.

    class Placemark
    // other code
    public function setAddress($address)
    $this->_address = (string) $address;
    >
    public function getAddress()
    return $this->_address;
    >
    public function __toString()
    return $this->getAddress();
    >
    public function setPoint(Point $point)
    $this->_point = $point;
    >
    public function getPoint()
    return $this->_point;
    >
    public function setAccuracy($accuracy)
    $this->_accuracy = (int) $accuracy;
    >
    public function getAccuracy()
    return $this->_accuracy;
    >
    // other code
    >

    В конце мы реализуем метод FromSimpleXml(), который является методом-фабрикой для создания объектов типа Placemark на основе объекта SimpleXMLElement.
    В примере, описанном ниже используется класс Point и его метод Create(), они будут описаны ниже.

    class Placemark
    // other code
    public static function FromSimpleXml($xml)
    require_once(‘Point.php’);
    $point = Point::Create($xml->Point->coordinates);
    $placemark = new self;
    $placemark->setPoint($point);
    $placemark->setAddress($xml->address);
    $placemark->setAccuracy($xml->AddressDetails[‘Accuracy’]);
    return $placemark;
    >
    >

    Создание класса Point

    Последний класс, который должен быть реализован для полноценного использования, — это класс Point. Этот класс хранит широту и долготу. Эти данные передаются в конструкторе, также присутствуют методы получения значений широты и долготы.

    class Point
    protected $_lat;
    protected $_lng;
    public function __construct($latitude, $longitude)
    $this->_lat = $latitude;
    $this->_lng = $longitude;
    >
    public function getLatitude()
    return $this->_lat;
    >
    public function getLongitude()
    return $this->_lng;
    >
    public static function Create($str)
    list($longitude, $latitude, $elevation) = explode(‘,’, $str, 3);
    return new self($latitude, $longitude);
    >
    >

    В данной статье рассмотрен простейший алгоритм работы с geocoder, используя Google Maps. Также вы можете использовать указанные класса вместе с JavaScript, но надо также не забывать, что не у всех может быть включен JavaScript.
    Также не забывайте, что кэширование ответов geocoder позволит вам снизить нагрузку и увеличить производительность в будущем.

    Источник

    Google Map For PHP With Source Code

    Google Map for PHP with Source Code 2021

    Google Map For PHP is a service on the Internet that gives detailed information about places and areas all over the world. Google Maps has more than just road maps.

    It also has aerial and satellite views of many places. In some cities, Google Maps has street views that are made up of pictures taken from cars.

    About The Project

    The Google Map API For PHP was developed using PHP, HTML, CSS, JavaScript and Bootstrap, This simple project Google Map With PHP shows you how to add a simple Google map to a web page.

    A Google Map In PHP It suits people with beginner or intermediate knowledge of HTML and CSS, and a little knowledge of JavaScript.

    This Turorial also includes a downloadable Source Code for free, just find the downloadable source code below and click to start downloading.

    To start creating this Google Map For PHP makes sure that you have sublime or any platform of PHP installed in your computer.

    Project Information’s

    How To Add Google Map In PHP Project With Source Code

    These are the steps on how to add Google Map In PHP Project With Source Code

    google map project folder

    First, create a folder from your “xampp” folder under “htdocs” folder and name it.

    Open folder.

    google map open folder

    Second, open “sublime text” and open the project folder you’ve created.

    google map create php file

    Third, create the php file under your project folder and name it into “index.php“.

    Paste the code given below.

    How To Create Google Map In PHP With Example?

    Display Google Map Script

    – The code given below which is the JavaScript of this simple project, you can also copy the codes given below and paste it into your file.

       

    HTML codes

    – The code given below which is the html form of this simple project, you can also copy the codes given below and paste it into your file.

    Google Map API For PHP Complete Source Code

            


    Load Map

    Download Source Code below

    Anyway, if you want to level up your programming knowledge, especially PHP, try this new article I’ve made for you Best PHP Projects With Source Code Free Download 2021.

    Summary

    Google Map It suits people with beginner or intermediate knowledge of HTML and CSS, and a little knowledge of JavaScript.

    This Simple Project With Source Code was developed using PHP, HTML, CSS and JavaScript. In this tutorial you will learn on How to create Google Map in an easy way and a short period of time. and also this tutorial is easy to understand the codes and process that are good for the beginners or the students

    Inquiries

    If you have any questions or suggestions about Google Map For PHP With Source Code , please feel free to leave a comment below.

    Leave a Comment Cancel reply

    You must be logged in to post a comment.

    Источник

    Читайте также:  What are HTML imports and how do they work
Оцените статью