网站地图    收藏   

主页 > php专栏 > php应用 >

php google api 接口程序 - php高级应用

来源:自学PHP网    时间:2014-11-27 22:16 作者: 阅读:

[导读] 常用的google地图开发参数phproogle::apiKey.这是谷歌的用户API密钥,这也可以设置使用时,一个新的实例是instanciated构造.phproogle::addGoogleMapControl() phproogle::addGoogleMapControl()......

php google api 接口程序

 

常用的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制作完成的地图本身.

  1. <?php 
  2.  
  3.  
  4. class phproogleMap { 
  5.  
  6. /* 
  7. * @The google api key 
  8. */ 
  9. private $apiKey ; 
  10.  
  11. /* 
  12. * @the map zoom level 
  13. */ 
  14. private $mapZoom = 8 ; 
  15.  
  16. /* 
  17. * @The width of the map div 
  18. */ 
  19. private $mapWidth = 350 ; 
  20.  
  21. /* 
  22. * @The height of the map div 
  23. */ 
  24. private $mapHeight = 300 ; 
  25.  
  26. /* 
  27. * @The map center 
  28. */ 
  29. private $mapCenter ; 
  30.  
  31. /* 
  32. * The array of map types 
  33. */ 
  34. private $googleMapTypes ; 
  35.  
  36. /* 
  37. * @The map type 
  38. */ 
  39. private $mapType = 'normal' ; 
  40.  
  41. /* 
  42. * @The array of marker points 
  43. */ 
  44. private $markerPoints = array(); 
  45.  
  46. /* 
  47. * @The array of marker addresses 
  48. */ 
  49. private $markerAddresses = array(); 
  50.  
  51. /* 
  52. * @The maps controls 
  53. */ 
  54. private $googleMapControls = array(); 
  55.  
  56. /* 
  57. * @The ID of the map div 
  58. */ 
  59. private $mapDivID ; 
  60.  
  61. /* 
  62. * The constructor 
  63. * 
  64. * @param apiKey 
  65. * 
  66. * @access public 
  67. * 
  68. * @return void 
  69. * 
  70. */ 
  71. public function __construct ( $apiKey = null ) 
  72. $this -> apiKey = is_null ( $apiKey ) ? '' : $apiKey ; 
  73. /*** set the map types ***/ 
  74. $this -> setGoogleMapTypes (); 
  75.  
  76.  
  77. /* 
  78. * 
  79. * @setter 
  80. * 
  81. * @access public 
  82. * 
  83. */ 
  84. public function __set ( $name , $value ) 
  85. switch ( $name ) 
  86. case 'apiKey' : 
  87. if(! is_string ( $value )) 
  88. throw new Exception ( $name , $value , 'string' ); 
  89. $this -> $name = $value ; 
  90. break
  91.  
  92. case 'mapZoom' : 
  93. if( filter_var ( $value , FILTER_VALIDATE_INT , array"options" => array"min_range" => 0 , "max_range" => 19 ))) == false ) 
  94. throw new Exception ( " $name is out of range" ); 
  95. $this -> $name = $value ; 
  96. break
  97.  
  98. case 'mapWidth' : 
  99. if( filter_var ( $value , FILTER_VALIDATE_INT , array"options" => array"min_range" => 100 , "max_range" => 900 ))) == false ) 
  100. throw new Exception ( " $name is out of range for" ); 
  101. $this -> $name = $value ; 
  102. break
  103.  
  104. case 'mapHeight' : 
  105. if( filter_var ( $value , FILTER_VALIDATE_INT , array"options" => array"min_range" => 100 , "max_range" => 900 ))) == false ) 
  106. throw new Exception ( " $name is out of range for" ); 
  107. $this -> $name = $value ; 
  108. break
  109.  
  110. case 'mapType' : 
  111. if(! array_key_exists ( $value , $this -> googleMapTypes ) ) 
  112. throw new Exception ( " $name is not a valid map type" ); 
  113. $this -> $name = $value ; 
  114. break
  115.  
  116. case 'mapDivID' : 
  117. if( ! is_string ( $value ) ) 
  118. throw new Exception ( " $name is not a valid ID" ); 
  119. $this -> $name = $value ; 
  120. break
  121.  
  122. case 'mapCenter' : 
  123. if( ! is_array ( $value ) ) 
  124. throw new Exception ( " $name is not a valid array" ); 
  125. $this -> $name = $value ; 
  126. break
  127.  
  128. default
  129. throw new Exception ( "Invalid Parameter $name " ); 
  130.  
  131.  
  132. /* 
  133. * 
  134. * @getter 
  135. * 
  136. * @access public 
  137. * 
  138. */ 
  139. public function __get ( $name ) 
  140. switch ( $name ) 
  141. case 'apiKey' : 
  142. return $this -> apiKey ; 
  143. break
  144.  
  145. case 'mapZoom' : 
  146. return $this -> mapZoom ; 
  147. break
  148.  
  149. case 'mapWidth' : 
  150. return $this -> mapWidth ; 
  151. break
  152.  
  153. case 'mapHeight' : 
  154. return $this -> mapHeight ; 
  155. break
  156.  
  157. case 'mapType' : 
  158. return $this -> mapType ; 
  159. break
  160.  
  161. case 'mapDivID' : 
  162. return $this -> mapDivID ; 
  163. break
  164.  
  165. case 'mapCenter' ; 
  166. return $this -> mapCenter ; 
  167. break
  168. /*** if we are here, throw an excepton ***/ 
  169. throw new Exception ( " $name is invalid" ); 
  170.  
  171.  
  172. /* 
  173. * 
  174. * @isset 
  175. * 
  176. * @access public 
  177. * 
  178. */ 
  179. public function __isset ( $name ) 
  180. switch ( $name ) 
  181. case 'apiKey' : 
  182. $this -> apiKey = $name ; 
  183. break
  184.  
  185. case 'mapZoom' : 
  186. $this -> mapZoom = $name ; 
  187. break
  188.  
  189. case 'mapWidth' : 
  190. $this -> mapWidth = $name ; 
  191. break
  192.  
  193. case 'mapHeight' : 
  194. $this -> mapHeight = $name ; 
  195. break
  196.  
  197. case 'mapType' : 
  198. $this -> mapType = $name ; 
  199. break
  200.  
  201. case 'mapDivID' : 
  202. $this -> mapDivID = $name ; 
  203. break
  204.  
  205. case 'mapCenter' ; 
  206. $this -> mapCenter = $name ; 
  207. break
  208.  
  209. default
  210. return false ; 
  211.  
  212.  
  213. /* 
  214. * 
  215. * @Set the map types 
  216. * 
  217. * @access private 
  218. * 
  219. * @return void 
  220. * 
  221. */ 
  222. private function setGoogleMapTypes () 
  223. $this -> googleMapTypes = array'physical' => 'G_PHYSICAL_MAP' , 'normal' => 'G_NORMAL_MAP' , 'satellite' => 'G_SATELLITE_MAP' , 'hybrid' => 'G_HYBRID_MAP' ); 
  224.  
  225. /* 
  226. * 
  227. * @add to the array of google maps controls 
  228. * 
  229. * @access public 
  230. * 
  231. * @return void 
  232. * 
  233. */ 
  234. public function addGoogleMapControl ( $control ) 
  235. $n = sizeof ( $this -> googleMapControls ); 
  236. $this -> googleMapControls [] = $control ; 
  237. /* 
  238. * 
  239. * @get pinpoint marker by address 
  240. * 
  241. * @access public 
  242. * 
  243. * @param string $address 
  244. * 
  245. * @param string $html 
  246. * 
  247. * @return void 
  248. * 
  249. */ 
  250. public function addMarkerAddress ( $address , $html ) 
  251. $s = sizeof ( $this -> markerAddresses ); 
  252. $this -> markerAddresses [ $s ][ 'address' ] = $address ; 
  253. $this -> markerAddresses [ $s ][ 'html' ]    = $html ; 
  254.  
  255.  
  256.  
  257. /* 
  258. * 
  259. * @get pinpoint mark by latitude or longitude 
  260. * 
  261. * @access public 
  262. * 
  263. * @param string $lat 
  264. * 
  265. * @param string $long 
  266. * 
  267. * @param string $html 
  268. * 
  269. * @return void 
  270. * 
  271. */ 
  272. public function addMarker ( $lat , $long , $html ) 
  273. $pointer = sizeof ( $this -> markerPoints ); 
  274. $this -> markerPoints [ $pointer ][ 'lat' ]  = $lat ; 
  275. $this -> markerPoints [ $pointer ][ 'long' ] = $long ; 
  276. $this -> markerPoints [ $pointer ][ 'html' ] = $html ; 
  277.  
  278.  
  279. /* 
  280. * 
  281. * @The javascript for google to connect 
  282. * 
  283. * @access public 
  284. * 
  285. * @return string 
  286. * 
  287. */ 
  288. public function googleJS () 
  289. return '<script src="http://maps.google.com/maps?file=api&v=2&key=' . $this -> apiKey . '" type="text/javascript"></script>' . " " ; 
  290.  
  291. private function noJavascript () 
  292. return '<noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
  293. However, it seems JavaScript is either disabled or not supported by your browser. 
  294. To view Google Maps, enable JavaScript by changing your browser options, and then 
  295. try again. 
  296. </noscript>' ; 
  297.  
  298.  
  299. public function drawMap () 
  300. $js = '<div id="' . $this -> mapDivID . '" style="width: ' . $this -> mapWidth . 'px; height: ' . $this -> mapHeight . 'px"></div>' ; 
  301. $js .= $this -> noJavascript (); 
  302.  
  303. $js .= ' 
  304. <script type="text/javascript"
  305. //<![CDATA[ 
  306.  
  307. if (GBrowserIsCompatible()) { 
  308.  
  309. geocoder = new GClientGeocoder(); 
  310.  
  311. function createMarker(point,html) { 
  312. var marker = new GMarker(point); 
  313. GEvent.addListener(marker, "click"function() { 
  314. marker.openInfoWindowHtml(html); 
  315. }); 
  316. return marker; 
  317.  
  318. // Display the map, with some controls and set the initial location 
  319. var map = new GMap2(document.getElementById("' . $this -> mapDivID . '"));' . " " ; 
  320.  
  321. /*** set the map controls here ***/ 
  322. if( sizeof ( $this -> googleMapControls ) > 0 ) 
  323. foreach$this -> googleMapControls as $control ) 
  324. $js .= 'map.addControl(new ' . $control . '());' . " " ; 
  325. /*** set the map center, zooom, and type ***/ 
  326. list( $lat , $long ) = $this -> mapCenter ; 
  327. $js .= 'map.setCenter(new GLatLng(' . $lat . ',' . $long . '), ' . $this -> mapZoom . ', ' . $this -> googleMapTypes [ $this -> mapType ]. ');' . " " ; 
  328.  
  329.  
  330. if( sizeof ( $this -> markerAddresses ) > 0 ) 
  331. foreach$this -> markerAddresses as $add ) 
  332. $base_url = "http://maps.google.com/maps/geo?output=xml" . "&key=" . $this -> apiKey ; 
  333. $request_url = file_get_contents ( $base_url . "&q=" . urlencode ( $add [ 'address' ])); 
  334. $xml = simplexml_load_string ( $request_url ); 
  335. $status = $xml -> Response -> Status -> code ; 
  336. $point = $xml -> Response -> Placemark -> Point -> coordinates ; 
  337. list( $long , $lat , $d ) = explode ( ',' , $point ); 
  338. $js .= 'var point = new GLatLng(' . $lat . ',' . $long . ');' . " " ; 
  339. $js .= "var marker = createMarker(point,'" . $add [ 'html' ]. "')" . " " ; 
  340. $js .= 'map.addOverlay(marker);' . " " ; 
  341.  
  342.  
  343. /*** set the markers here ***/ 
  344. foreach$this -> markerPoints as $data ) 
  345. $js .= 'var point = new GLatLng(' . $data [ 'lat' ]. ',' . $data [ 'long' ]. ');' . " " ; 
  346. $js .= "var marker = createMarker(point,'" . $data [ 'html' ]. "')" . " " ; 
  347. $js .= 'map.addOverlay(marker);' . " " ; 
  348. $js .= ' 
  349. GMap.prototype.centerAndZoomOnBounds = function(bounds) { 
  350. // make 10% bigger so all markers show completely 
  351. var span = new GSize((bounds.maxX - bounds.minX) * 1.1, (bounds.maxY - bounds.minY)*1.1); 
  352. var center = new GPoint(bounds.minX + span.width / 2., bounds.minY + span.height / 2.); 
  353.  
  354. var newZoom = this.spec.getLowestZoomLevel(center, span, this.viewSize); 
  355. if (this.getZoomLevel() != newZoom) { 
  356. this.centerAndZoom(center, newZoom); 
  357. else { 
  358. this.recenterOrPanToLatLng(center); 
  359.  
  360. // display a warning if the browser was not compatible 
  361. else { 
  362. alert("Sorry, the Google Maps API is not compatible with this browser"); 
  363.  
  364. //]]> 
  365. </script>' ; 
  366.  
  367. return $js ; 
  368.  
  369.  
  370. /*** end of class ***/ 
  371.  
  372.  
  373. try 
  374. /*** a new phproogle instance ***/ 
  375. $map = new phproogleMap (); 
  376.  
  377. /*** the google api key ***/ 
  378. $map -> apiKey = 'YOUR_GOOGLE_API_KEY' ; 
  379.  
  380. /*** zoom is 0 - 19 ***/ 
  381. $map -> mapZoom = 14 ; 
  382.  
  383. /*** the map width ***/ 
  384. $map -> mapWidth = 350 ; 
  385.  
  386. /*** the map height ***/ 
  387. $map -> mapHeight = 300 ; 
  388.  
  389. /*** set the map type ***/ 
  390. $map -> mapType = 'normal' ; 
  391.  
  392. /*** set the map center ***/ 
  393. $map -> mapCenter = array(- 33.862828 , 151.216974 ); 
  394.  
  395. /*** add some markers with latitude and longitude  ***/ 
  396. $map -> addMarker (- 33.858362 , 151.214876 , '<h2>Sydney Opera House</h2><p>For those with culture</p>' ); 
  397. $map -> addMarker (- 33.862828 , 151.216974 , '<h3>Royal Botanic Gardens</h2><a href="http://phpro.org">A link here</a>' ); 
  398.  
  399.  
  400. /*** add some controls ***/ 
  401. $map -> addGoogleMapControl ( 'GMapTypeControl' ); 
  402. $map -> addGoogleMapControl ( 'GSmallMapControl' ); 
  403. $map -> addGoogleMapControl ( 'GOverviewMapControl' ); 
  404.  
  405. /*** add some marker addresses ***/ 
  406. $map -> addMarkerAddress ( '2 Pitt St Sydney NSW Australia' , '<h2>Head Office</h2>' ); 
  407. $map -> addMarkerAddress ( '122 Pitt St Sydney NSW Australia' , '<h2>The Factory</h2>' ); 
  408.  
  409. /*** set the map div id ***/ 
  410. $map -> mapDivID = 'map' ; 
  411. catch( Exception $e ) 
  412. echo $e -> getMessage (); 
  413. //开源代码phpfensi.com 
  414. ?> 
  415.  
  416. <html> 
  417. <head> 
  418. <?php echo $map -> googleJS (); ?> 
  419. </head> 
  420. <body> 
  421. <?php echo $map -> drawMap (); ?> 
  422. </body> 
  423. </html> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论