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制作完成的地图本身.
<?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();
}
?>
<html>
<head>
<?php echo $map -> googleJS ();
</head>
<body>
<?php echo $map -> drawMap ();
</body>
</html>教程链接:http://www.phprm.com/develop/fs5183.html
随意转载~但请保留教程地址★