Heim >Backend-Entwicklung >PHP-Tutorial >php google api 接口程序_PHP教程

php google api 接口程序_PHP教程

WBOY
WBOYOriginal
2016-07-20 11:07:001082Durchsuche

php google api 接口程序

php google api 接口程序

这里是一个完全funtional类生成谷歌地图。 允许多类定制,使用户能够快速实现在几分钟之内就没有任何网站的JavaScript或谷歌地图谷歌地图API的知识。

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 '' . "n" ;
}

private function noJavascript ()
{
return '

' ;
}


public function drawMap ()
{
$js = '

' ;
$js .= $this -> noJavascript ();

$js .= '

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 . '"));' . "n" ;

/*** set the map controls here ***/
if( sizeof ( $this -> googleMapControls ) > 0 )
{
foreach( $this -> googleMapControls as $control )
{
$js .= 'map.addControl(new ' . $control . '());' . "n" ;
}
}
/*** 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 ]. ');' . "nn" ;


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 . ');' . "n" ;
$js .= "var marker = createMarker(point,'" . $add [ 'html' ]. "')" . "n" ;
$js .= 'map.addOverlay(marker);' . "nn" ;
}
}


/*** set the markers here ***/
foreach( $this -> markerPoints as $data )
{
$js .= 'var point = new GLatLng(' . $data [ 'lat' ]. ',' . $data [ 'long' ]. ');' . "n" ;
$js .= "var marker = createMarker(point,'" . $data [ 'html' ]. "')" . "n" ;
$js .= 'map.addOverlay(marker);' . "nn" ;
}
$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");
}

//]]>
' ;

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 , '

Sydney Opera House

For those with culture

' );
$map -> addMarker (- 33.862828 , 151.216974 , '

Royal Botanic GardensA link here' );


/*** add some controls ***/
$map -> addGoogleMapControl ( 'GMapTypeControl' );
$map -> addGoogleMapControl ( 'GSmallMapControl' );
$map -> addGoogleMapControl ( 'GOverviewMapControl' );

/*** add some marker addresses ***/
$map -> addMarkerAddress ( '2 Pitt St Sydney NSW Australia' , '

Head Office

' );
$map -> addMarkerAddress ( '122 Pitt St Sydney NSW Australia' , '

The Factory

' );

/*** set the map div id ***/
$map -> mapDivID = 'map' ;
}
catch( Exception $e )
{
echo $e -> getMessage ();
}
?>



googleJS (); ?>


drawMap (); ?>

常用的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

    addGoogleMapControl ( "GSmallMapControl" ); ?>
phproogle::mapType phproogle::mapType
    This sets the map type to one of four options:这将设置地图类型的四个选项之一:

        * normal正常
        * satellite卫星
        * hybrid混合
        * physical物理

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


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444981.htmlTechArticlephp google api 接口程序 php google api 接口程序 这里是一个完全funtional类生成谷歌地图。 允许多类定制,使用户能够快速实现在几分钟之内就没...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn