加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php google api 接口程序

发布时间:2022-02-17 12:57:35 所属栏目:PHP教程 来源:互联网
导读:常用的google地图开发参数 phproogle::apiKey .这是谷歌的用户API密钥,这也可以设置使用时,一个新的实例是instanciated构造. phproogle::addGoogleMapControl() phproogle::addGoogleMapControl() 此方法设置,如缩放控制控制器的谷歌地图,地图控制等此方
  常用的google地图开发参数
 
  phproogle::apiKey
 
  .这是谷歌的用户API密钥,这也可以设置使用时,一个新的实例是instanciated构造.
 
  phproogle::addGoogleMapControl() phproogle::addGoogleMapControl()
 
  此方法设置,如缩放控制控制器的谷歌地图,地图控制等此方法可以多次调用设置地图多个控件,Options are:选项有:
 
  * GLargeMapControl GLargeMapControl
 
  * GSmallMapControl GSmallMapControl
 
  * GSmallZoomControl GSmallZoomControl
 
  * GScaleControl GScaleControl
 
  * GMapTypeControl GMapTypeControl
 
  * GHierarchicalMapTypeControl GHierarchicalMapTypeControl
 
  * GOverviewMapControl GOverviewMapControl
 
  <?php $map -> addGoogleMapControl ( "GSmallMapControl" ); ?>
 
  phproogle::mapType phproogle::mapType
 
  This sets the map type to one of four options:这将设置地图类型的四个选项之一:
 
  * normal正常
 
  * satellite卫星
 
  * hybrid混合
 
  * physical物理
 
  <?php $map -> mapType = "normal" ; ?>
 
  phproogle::mapCenter phproogle::mapCenter
 
  T这将设置分区范围内的地图中心,该值是一个包含的纬度和经度的地图中心的顺序.
 
  $map->mapCenter = array(-33.862828, 151.216974); 1 $map->mapCenter = array(-33.862828, 151.216974); 1
 
  phproogle::mapZoom phproogle::mapZoom
 
  这将设置地图缩放级别。 零值是最广泛的缩放级别,并显示整个世界。 虽然19日是最高变焦,将显示建筑物。 Each zoom level doubles the zoom.每个缩放级别的两倍变焦。 12.默认值为12。
 
  phproogle::addMarker() phproogle::addMarker()
 
  This function is used to create and place markers upon the map.这个函数用于创建和地点后,地图标记。 the addMarker method takes three args.在addMarker argS的方法有三个。
 
  * float $latitude浮动$纬度
 
  * float $longitude浮动$经度
 
  * string $html字符串$的HTML
 
  .经度和纬度都是数字值和HTML可以是任何HTML或文本将在标记球囊内。
 
  phproogle::addMarkerAddress() phproogle::addMarkerAddress()
 
  此方法类似于phproogle::addMarker()和地方在地图上的标记。 然而,而不是接受经度和纬度来放置标志,这种方法需要两个值。
 
  * string $address字符串$地址
 
  * string $html字符串$的HTML
 
  参数的地址,如“二街宫人至法国巴黎简单的地址”。  balloon.在HTML参数再次,任何文本或HTML放置在信息气球。
 
  phproogle::mapDivID phproogle::mapDivID
 
  当设置,这将设置组ID的映射居住于默认值是“地图”
 
  phproogle::mapWidth phproogle::mapWidth
 
  顾名思义,这将设置div的宽度该地图居住于默认宽度为350像素。
 
  phproogle::mapHeight phproogle::mapHeight
 
  这将设置分区的高度该地图居住于默认值是300像素。
 
  phproogle::googleJS() phproogle::googleJS()
 
  此方法返回的JavaScript字符串,用于在文件头,显示与谷歌API密钥连接字符串最频繁。
 
  phproogle::drawMap() phproogle::drawMap()
 
  此方法返回的JavaScript制作完成的地图本身.
 
  <?php
  
  
  class phproogleMap {
  
  /*
  * @The google api key
  */
  private $apiKey ;
  
  /*
  * @the map zoom level
  */
  private $mapZoom = 8 ;
  
  /*
  * @The width of the map div
  */
  private $mapWidth = 350 ;
  
  /*
  * @The height of the map div
  */
  private $mapHeight = 300 ;
  
  /*
  * @The map center
  */
  private $mapCenter ;
  
  /*
  * The array of map types
  */
  private $googleMapTypes ;
  
  /*
  * @The map type
  */
  private $mapType = 'normal' ;
  
  /*
  * @The array of marker points
  */
  private $markerPoints = array();
  
  /*
  * @The array of marker addresses
  */
  private $markerAddresses = array();
  
  /*
  * @The maps controls
  */
  private $googleMapControls = array();
  
  /*
  * @The ID of the map div
  */
  private $mapDivID ;
  
  /*
  * The constructor
  *
  * @param apiKey
  *
  * @access public
  *
  * @return void
  *
  */
  public function __construct ( $apiKey = null )
  {
  $this -> apiKey = is_null ( $apiKey ) ? '' : $apiKey ;
  /*** set the map types ***/
  $this -> setGoogleMapTypes ();
  }
  
  
  /*
  *
  * @setter
  *
  * @access public
  *
  */
  public function __set ( $name , $value )
  {
  switch ( $name )
  {
  case 'apiKey' :
  if(! is_string ( $value ))
  {
  throw new Exception ( $name , $value , 'string' );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapZoom' :
  if( filter_var ( $value , FILTER_VALIDATE_INT , array( "options" => array( "min_range" => 0 , "max_range" => 19 ))) == false )
  {
  throw new Exception ( " $name is out of range" );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapWidth' :
  if( filter_var ( $value , FILTER_VALIDATE_INT , array( "options" => array( "min_range" => 100 , "max_range" => 900 ))) == false )
  {
  throw new Exception ( " $name is out of range for" );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapHeight' :
  if( filter_var ( $value , FILTER_VALIDATE_INT , array( "options" => array( "min_range" => 100 , "max_range" => 900 ))) == false )
  {
  throw new Exception ( " $name is out of range for" );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapType' :
  if(! array_key_exists ( $value , $this -> googleMapTypes ) )
  {
  throw new Exception ( " $name is not a valid map type" );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapDivID' :
  if( ! is_string ( $value ) )
  {
  throw new Exception ( " $name is not a valid ID" );
  }
  $this -> $name = $value ;
  break;
  
  case 'mapCenter' :
  if( ! is_array ( $value ) )
  {
  throw new Exception ( " $name is not a valid array" );
  }
  $this -> $name = $value ;
  break;
  
  default:
  throw new Exception ( "Invalid Parameter $name " );
  }
  }
  
  
  /*
  *
  * @getter
  *
  * @access public
  *
  */
  public function __get ( $name )
  {
  switch ( $name )
  {
  case 'apiKey' :
  return $this -> apiKey ;
  break;
  
  case 'mapZoom' :
  return $this -> mapZoom ;
  break;
  
  case 'mapWidth' :
  return $this -> mapWidth ;
  break;
  
  case 'mapHeight' :
  return $this -> mapHeight ;
  break;
  
  case 'mapType' :
  return $this -> mapType ;
  break;
  
  case 'mapDivID' :
  return $this -> mapDivID ;
  break;
  
  case 'mapCenter' ;
  return $this -> mapCenter ;
  break;
  }
  /*** if we are here, throw an excepton ***/
  throw new Exception ( " $name is invalid" );
  }
  
  
  /*
  *
  * @isset
  *
  * @access public
  *
  */
  public function __isset ( $name )
  {
  switch ( $name )
  {
  case 'apiKey' :
  $this -> apiKey = $name ;
  break;
  
  case 'mapZoom' :
  $this -> mapZoom = $name ;
  break;
  
  case 'mapWidth' :
  $this -> mapWidth = $name ;
  break;
  
  case 'mapHeight' :
  $this -> mapHeight = $name ;
  break;
  
  case 'mapType' :
  $this -> mapType = $name ;
  break;
  
  case 'mapDivID' :
  $this -> mapDivID = $name ;
  break;
  
  case 'mapCenter' ;
  $this -> mapCenter = $name ;
  break;
  
  default:
  return false ;
  }
  }
  
  
  /*
  *
  * @Set the map types
  *
  * @access private
  *
  * @return void
  *
  */
  private function setGoogleMapTypes ()
  {
  $this -> googleMapTypes = array( 'physical' => 'G_PHYSICAL_MAP' , 'normal' => 'G_NORMAL_MAP' , 'satellite' => 'G_SATELLITE_MAP' , 'hybrid' => 'G_HYBRID_MAP' );
  }
  
  /*
  *
  * @add to the array of google maps controls
  *
  * @access public
  *
  * @return void
  *
  */
  public function addGoogleMapControl ( $control )
  {
  $n = sizeof ( $this -> googleMapControls );
  $this -> googleMapControls [] = $control ;
  }
  /*
  *
  * @get pinpoint marker by address
  *
  * @access public
  *
  * @param string $address
  *
  * @param string $html
  *
  * @return void
  *
  */
  public function addMarkerAddress ( $address , $html )
  {
  $s = sizeof ( $this -> markerAddresses );
  $this -> markerAddresses [ $s ][ 'address' ] = $address ;
  $this -> markerAddresses [ $s ][ 'html' ]    = $html ;
  }
  
  
  
  /*
  *
  * @get pinpoint mark by latitude or longitude
  *
  * @access public
  *
  * @param string $lat
  *
  * @param string $long
  *
  * @param string $html
  *
  * @return void
  *
  */
  public function addMarker ( $lat , $long , $html )
  {
  $pointer = sizeof ( $this -> markerPoints );
  $this -> markerPoints [ $pointer ][ 'lat' ]  = $lat ;
  $this -> markerPoints [ $pointer ][ 'long' ] = $long ;
  $this -> markerPoints [ $pointer ][ 'html' ] = $html ;
  }
  
  
  /*
  *
  * @The javascript for google to connect
  *
  * @access public
  *
  * @return string
  *
  */
  public function googleJS ()
  {
  return '<script src="http://maps.google.com/maps?file=api&v=2&key=' . $this -> apiKey . '" type="text/javascript"></script>' . " " ;
  }
  
  private function noJavascript ()
  {
  return '<noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b>
  However, it seems JavaScript is either disabled or not supported by your browser.
  To view Google Maps, enable JavaScript by changing your browser options, and then
  try again.
  </noscript>' ;
  }
  
  
  public function drawMap ()
  {
  $js = '<div id="' . $this -> mapDivID . '" style="width: ' . $this -> mapWidth . 'px; height: ' . $this -> mapHeight . 'px"></div>' ;
  $js .= $this -> noJavascript ();
  
  $js .= '
  <script type="text/javascript">
  //<![CDATA[
  
  if (GBrowserIsCompatible()) {
  
  geocoder = new GClientGeocoder();
  
  function createMarker(point,html) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, "click", function() {
  marker.openInfoWindowHtml(html);
  });
  return marker;
  }
  
  // Display the map, with some controls and set the initial location
  var map = new GMap2(document.getElementById("' . $this -> mapDivID . '"));' . " " ;
  
  /*** set the map controls here ***/
  if( sizeof ( $this -> googleMapControls ) > 0 )
  {
  foreach( $this -> googleMapControls as $control )
  {
  $js .= 'map.addControl(new ' . $control . '());' . " " ;
  }
  }
  /*** set the map center, zooom, and type ***/
  list( $lat , $long ) = $this -> mapCenter ;
  $js .= 'map.setCenter(new GLatLng(' . $lat . ',' . $long . '), ' . $this -> mapZoom . ', ' . $this -> googleMapTypes [ $this -> mapType ]. ');' . " " ;
  
  
  if( sizeof ( $this -> markerAddresses ) > 0 )
  {
  foreach( $this -> markerAddresses as $add )
  {
  $base_url = "http://maps.google.com/maps/geo?output=xml" . "&key=" . $this -> apiKey ;
  $request_url = file_get_contents ( $base_url . "&q=" . urlencode ( $add [ 'address' ]));
  $xml = simplexml_load_string ( $request_url );
  $status = $xml -> Response -> Status -> code ;
  $point = $xml -> Response -> Placemark -> Point -> coordinates ;
  list( $long , $lat , $d ) = explode ( ',' , $point );
  $js .= 'var point = new GLatLng(' . $lat . ',' . $long . ');' . " " ;
  $js .= "var marker = createMarker(point,'" . $add [ 'html' ]. "')" . " " ;
  $js .= 'map.addOverlay(marker);' . " " ;
  }
  }
  
  
  /*** set the markers here ***/
  foreach( $this -> markerPoints as $data )
  {
  $js .= 'var point = new GLatLng(' . $data [ 'lat' ]. ',' . $data [ 'long' ]. ');' . " " ;
  $js .= "var marker = createMarker(point,'" . $data [ 'html' ]. "')" . " " ;
  $js .= 'map.addOverlay(marker);' . " " ;
  }
  $js .= '
  GMap.prototype.centerAndZoomOnBounds = function(bounds) {
  // make 10% bigger so all markers show completely
  var span = new GSize((bounds.maxX - bounds.minX) * 1.1, (bounds.maxY - bounds.minY)*1.1);
  var center = new GPoint(bounds.minX + span.width / 2., bounds.minY + span.height / 2.);
  
  var newZoom = this.spec.getLowestZoomLevel(center, span, this.viewSize);
  if (this.getZoomLevel() != newZoom) {
  this.centerAndZoom(center, newZoom);
  } else {
  this.recenterOrPanToLatLng(center);
  }
  }
  
  // display a warning if the browser was not compatible
  } else {
  alert("Sorry, the Google Maps API is not compatible with this browser");
  }
  
  //]]>
  </script>' ;
  
  return $js ;
  
  }
  
  } /*** end of class ***/
  
  
  try
  {
  /*** a new phproogle instance ***/
  $map = new phproogleMap ();
  
  /*** the google api key ***/
  $map -> apiKey = 'YOUR_GOOGLE_API_KEY' ;
  
  /*** zoom is 0 - 19 ***/
  $map -> mapZoom = 14 ;
  
  /*** the map width ***/
  $map -> mapWidth = 350 ;
  
  /*** the map height ***/
  $map -> mapHeight = 300 ;
  
  /*** set the map type ***/
  $map -> mapType = 'normal' ;
  
  /*** set the map center ***/
  $map -> mapCenter = array(- 33.862828 , 151.216974 );
  
  /*** add some markers with latitude and longitude  ***/
  $map -> addMarker (- 33.858362 , 151.214876 , '<h2>Sydney Opera House</h2><p>For those with culture</p>' );
  $map -> addMarker (- 33.862828 , 151.216974 , '<h3>Royal Botanic Gardens</h2><a href="http://phpro.org">A link here</a>' );
  
  
  /*** add some controls ***/
  $map -> addGoogleMapControl ( 'GMapTypeControl' );
  $map -> addGoogleMapControl ( 'GSmallMapControl' );
  $map -> addGoogleMapControl ( 'GOverviewMapControl' );
  
  /*** add some marker addresses ***/
  $map -> addMarkerAddress ( '2 Pitt St Sydney NSW Australia' , '<h2>Head Office</h2>' );
  $map -> addMarkerAddress ( '122 Pitt St Sydney NSW Australia' , '<h2>The Factory</h2>' );
  
  /*** set the map div id ***/
  $map -> mapDivID = 'map' ;
  }
  catch( Exception $e )
  {
  echo $e -> getMessage ();
  //开源代码Cuoxin.com
  }
  ?>
  
  <html>
  <head>
  <?php echo $map -> googleJS (); ?>
  </head>
  <body>
  <?php echo $map -> drawMap (); ?>
  </body>
  </html> 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读