Achievo Community
https://www.atk-framework.com/forum/

usage of atkgooglemap attribute
https://www.atk-framework.com/forum/viewtopic.php?f=2&t=35651
Page 1 of 1

Author:  dgangal [ Sun Oct 09, 2016 6:12 am ]
Post subject:  usage of atkgooglemap attribute

usage of atkgooglemap attribute :

Code:
useattrib('atkgooglemapsattribute'); //given below
:
:

//use in constructor
$map = &$this->add(new atkGoogleMapsAttribute('Map', array('width'=>400, 'height'=>300), 0));
:
:




Code:
//put following in config.inc.php
$config_googlemapskey = 'AIzaSyBDVCcJmQQ27AqKheKFS8fr5lfuCFujPok';
$config_googlemapsmarker = 'bigmarker.png';
$config_googlemapsdefaultcenter = '51.558180, 4.464709';
$config_googlemapsdefaultcenter = '19.0330338, 75.0296415';



class.atkgooglemapsattribute.inc copy in <atk/attributes> folder
Code:
<?php

useattrib("atkdummyattribute");

  /**
  *** How to use ?  Sat.08.OCt.2016

  copy this attribute in atk/attributes/

  This line include at top :
  useattrib('atkgooglemapsattribute');

  In the body use it like this
/*
//put following in config
$config_googlemapskey = 'AIzaSyBDVCcJmQQ27AqKheKFS8fr5lfuCFujPok';
$config_googlemapsmarker = 'bigmarker.png';
$config_googlemapsdefaultcenter = '51.558180, 4.464709';
$config_googlemapsdefaultcenter = '19.0330338, 75.0296415';
*/

//USage:
//$map = &$this->add(new atkGoogleMapsAttribute('Map', array('width'=>400, 'height'=>300), 0));





  /*
  Thu.01.Sep.2016 touched for bkp
   * This file is part of the Achievo ATK distribution.
   * Detailed copyright and licensing information can be found
   * in the doc/COPYRIGHT and doc/LICENSE files which should be
   * included in the distribution.
   *
   * @package atk
   * @subpackage attributes
   *
   * @copyright (c)2000-2004 Ibuildings.nl BV
   * @license http://www.achievo.org/atk/licensing ATK Open Source License
   *
   */

  /**
   * The atkGoogleMapsAttribute can be used to diplay Google Maps.
   *
   * @author Rik Willems <rik@actiview.nl>
   * @package atk
   * @subpackage attributes
   *
   */
class atkGoogleMapsAttribute extends atkDummyAttribute
{

    var $m_text;

    /**
     * Constructor
     * @param string $name Name of the attribute
     * @param string $text text field
     * @param int $flags Flags for this attribute
     */
    function atkGoogleMapsAttribute($name, $size=array(), $flags=0)
    {
      $this->atkDummyAttribute($name,'',$flags|AF_HIDE_LIST | AF_NO_LABEL | AF_HIDE_SEARCH | AF_NO_SORT); // base class constructor
      
      $this->m_size = $size;
      
    }
      
    /**
     * Parses a record
     *
     * @param array $record The record that holds the value for this attribute.
     * @param String $fieldprefix The fieldprefix to put in front of the name
     *                            of any html form element for this attribute.
     * @param String $mode The mode we're in ('add' or 'edit')
     * @return Parsed string
     */
    function edit($record="", $fieldprefix="", $mode="")
    {
      return $this->display($record);
    }


    /**
     * Parses a record
     * @param array $record  Array with fields
     * @return Parsed string
     */
    function display($record)
    {
   
      atkimport("atk.utils.atkstringparser");
      $stringparser = new atkStringParser('[latitude],[longitude]');
      $latlng = $stringparser->parse($record);

      $page = &$this->m_ownerInstance->getPage();
      $page->register_script('http://maps.google.com/maps?file=api&v=2&key='.atkconfig('googlemapskey').'&sensor=false');
      $page->register_scriptcode($this->getJavascript($latlng));
        $page->register_loadscript('initialize()');

      return '<div id="map_canvas" style="width: '.(($this->m_size['width']) ? $this->m_size['width'] : '600px') .'px; height: '.(($this->m_size['height']) ? $this->m_size['height'] : '400px') .'px"></div>';
    
    }


   function getJavascript($latlng) {

      $latlng = str_replace(' ','', $latlng);
      if ( $latlng == ',' ) {
         $latlng = atkconfig('googlemapsdefaultcenter');
         $zoom = 11;
      }
      else $zoom = 15;
   
      $return = "   

         var map;
         var geocoder;
         var address;

         function initialize() {
            map = new GMap2(document.getElementById('map_canvas'));
            var center = new GLatLng($latlng);
            map.setCenter(center, $zoom);
            map.setUIToDefault();

            var markerD2 = new GMarker(center, {icon: new GIcon(G_DEFAULT_ICON, '".atkconfig('googlemapsmarker')."'), draggable: true});
            map.addOverlay(markerD2);
            markerD2.enableDragging();

            GEvent.addListener(markerD2, 'dragend', function(){
               if ( document.forms['entryform'].elements['latitude'] ) document.forms['entryform'].elements['latitude'].value = markerD2.getPoint().lat();
               if ( document.forms['entryform'].elements['longitude'] ) document.forms['entryform'].elements['longitude'].value = markerD2.getPoint().lng();
            });

            geocoder = new GClientGeocoder();
            
         }
         
         function getAddress(overlay, latlng) {
            if (latlng != null) {
               address = latlng;
               geocoder.getLocations(latlng, showAddress);
            }
         }

         function showAddress(response) {

            map.clearOverlays();
            if (!response || response.Status.code != 200) {
               alert('Status Code:' + response.Status.code);
            }
            else {
               place = response.Placemark[0];
               point = new GLatLng(place.Point.coordinates[1],
                              place.Point.coordinates[0]);
               //marker = new GMarker(point,{draggable: true});
               //map.addOverlay(marker);
               marker.openInfoWindowHtml(
                  '<b>orig latlng:</b>' + response.name + '<br/>' +
                  '<b>latlng:</b>' + place.Point.coordinates[1] + ',' + place.Point.coordinates[0] + '<br>' +
                  '<b>Status Code:</b>' + response.Status.code + '<br>' +
                  '<b>Status Request:</b>' + response.Status.request + '<br>' +
                  '<b>Address:</b>' + place.address + '<br>' +
                  '<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
                  '<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
               }
               
               if ( document.forms['entryform'].elements['latitude'] ) document.forms['entryform'].elements['latitude'].value = place.Point.coordinates[1];
               if ( document.forms['entryform'].elements['longitude'] ) document.forms['entryform'].elements['longitude'].value = place.Point.coordinates[0];

            }
         
         
   
      ";
      
      return $return;
   }

}

?>


Page 1 of 1 All times are UTC + 1 hour
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/