如何在PHP中使用多个位置和多个标记显示Google地图 [英] How to Show Google Maps with Multiple Locations and Many Markers in PHP
本文介绍了如何在PHP中使用多个位置和多个标记显示Google地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这里是我的php代码:
<?php
$ dbhost ='localhost';
$ dbuser ='root';
$ dbpwd ='';
$ dbname ='rentozy_db';
$ db = new mysqli($ dbhost,$ dbuser,$ dbpwd,$ dbname);
$ sql ='select * from`tbl_master_property`;';
$ result = $ db-> query($ sql);
$ b $ attribs = array('pg_id','name','pg_address','lat','lng','pg_type');
$ dom = new DOMDocument('1.0');
$ root = $ dom-> createElement('tbl_master_property');
$ dom-> appendChild($ root);
$ b $ while($ rs = $ result-> fetch_object()){
$ node = $ dom-> createElement('tbl_master_property');
$ root-> appendChild($ node);
foreach($ attribs as $ attrib){
$ attr = $ dom-> createAttribute($ attrib);
$ value = $ dom-> createTextNode($ rs-> $ attrib);
$ attr-> appendChild($ value);
$ node-> appendChild($ attr);
}
}
echo $ dom-> saveXML();
?>
这里是我的脚本代码:
< div class =map>
< div id =map>< / div>
< script>
var customLabel = {
restaurant:{
label:'R'
},
bar:{
label:'B'
}
};
函数initMap(){
var map = new google.maps.Map(document.getElementById('map'),{
center:new google.maps.LatLng( -33.863276,151.207977),
zoom:12
});
var infoWindow = new google.maps.InfoWindow;
//根据您的PHP或XML文件的名称更改此值
downloadUrl('https://storage.googleapis.com/mapsdevsite/json/mapmarkers2.xml',function(数据){
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(markers,function(markerElem) {
var id = markerElem.getAttribute('id');
var name = markerElem.getAttribute('name');
var address = markerElem.getAttribute('address');
var type = markerElem.getAttribute('type');
var point = new google.maps.LatLng(
parseFloat(markerElem.getAttribute('lat')),
parseFloat (markerElem.getAttribute('lng')));
var infowincontent = document.createElement('div');
var strong = document.cre ateElement('strong');
strong.textContent = name
infowincontent.appendChild(strong);
infowincontent.appendChild(document.createElement('br'));
var text = document.createElement('text');
text.textContent =地址
infowincontent.appendChild(text);
var icon = customLabel [type] || {};
var marker = new google.maps.Marker({
map:map,
position:point,
label:icon.label
});
marker.addListener('click',function(){
infoWindow.setContent(infowincontent);
infoWindow.open(map,marker);
});
});
});
}
函数downloadUrl(url,callback){
var request = window.ActiveXObject?
new ActiveXObject('Microsoft.XMLHTTP'):
new XMLHttpRequest;
request.onreadystatechange = function(){
if(request.readyState == 4){
request.onreadystatechange = doNothing;
回调(request,request.status);
}
};
request.open('GET',url,true);
request.send(null);
}
函数doNothing(){}
< / script>
< script async defer
src =https://maps.googleapis.com/maps/api/js?key=AIzaSyDvyRXDlH8lyIFaFMPldx_hK2Nfh-hduDE&callback=initMap>
< / script>
< / div>
解决方案
继上一个问题和答案之后,我给了你或许
<?php
if($ _SERVER ['REQUEST_METHOD'] = ='GET'&&!empty($ _GET ['action'])&& $ _GET ['action'] =='getXML'){
$ dbhost ='localhost ;
$ dbuser ='root';
$ dbpwd ='xxx';
$ dbname ='xxx';
$ db = new mysqli($ dbhost,$ dbuser,$ dbpwd,$ dbname);
$ sql ='select * from`markers`;';
$ result = $ db-> query($ sql);
$ b $ attribs = array('id','name','address','lat','lng','type');
$ dom = new DOMDocument('1.0','utf-8');
$ dom-> formatOutput = true;
$ dom-> standalone = true;
$ dom-> recover = true;
$ root = $ dom-> createElement('tbl_master_property');
$ dom-> appendChild($ root);
$ b $ while($ rs = $ result-> fetch_object()){
$ node = $ dom-> createElement('marker');
$ root-> appendChild($ node);
foreach($ attribs as $ attrib){
$ attr = $ dom-> createAttribute($ attrib);
$ value = $ dom-> createTextNode($ rs-> $ attrib);
$ attr-> appendChild($ value);
$ node-> appendChild($ attr);
}
}
header('Content-Type:application / xml');
exit($ dom-> saveXML());
}
?>
<!doctype html>
< html>
< head>
< meta charset ='utf-8'/>
< title> G00gle地图< / title>
< script>
var _markers = [];
函数downloadUrl(url,callback){
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function(){
if(this.readyState == 4&& this.status == 200)callback(this.responseXML);
};
xhr.open('GET',url,true);
xhr.send(null);
函数initMap(){
var customLabel = {
restaurant:{label:'R'},
bar:{label:' B'}
};
var div = document.getElementById('map');
var options = {
center:new google.maps.LatLng(-33.863276,151.207977),
zoom:12
};
var map = new google.maps.Map(div,options);
var infoWindow = new google.maps.InfoWindow;
var _callback = function(xml){
var markers = Array.prototype.slice.call(xml.documentElement.getElementsByTagName('marker'));
markers.forEach(function(mkr){
var id = mkr.getAttribute('id');
var lat = mkr.getAttribute('lat');
var lng = mkr.getAttribute('lng');
var address = mkr.getAttribute('address');
var type = mkr.getAttribute('type');
var latlng = new google.maps.LatLng(lat,lng);
var label = customLabel [type] || {};
console.info('id =%s lat =%s lng =%s address =%s type =%s',id,lat,lng,address,type);
var marker = new google.maps.Marker({
map:map,
position:latlng,
title:address
});
marker.addListener('click',function(e){
console.info(e.latLng.lat()+','+ e.latLng.lng());
infoWindow.setContent(decodeURI(address));
infoWindow.open(map,marker);
});
_markers.push(marker);
});
$ b / *获取xml数据* /
var xml = downloadUrl('?action = getXML',_callback);
}
< / script>
< script async defer src =// maps.googleapis.com/maps/api/js?key=AIzaSyDvyRXDlH8lyIFaFMPldx_hK2Nfh-hduDE&callback=initMap\"> ;</script>
< style type ='text / css'charset ='utf-8'>
#map {
width:800px;
height:600px;
}
< / style>
< / head>
< body>
< div id ='map'>< / div>
< / body>
< / html>
Actually,i have created basic google map in my website i need How to Show Google Maps with Multiple Locations and Many Markers in PHP, i have stored data like(name, address,latitude,longitude) in database, please how to show exactly place marker in my google map please help me.
Here my php code:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpwd = '';
$dbname = 'rentozy_db';
$db = new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );
$sql='select * from `tbl_master_property`;';
$result=$db->query( $sql );
$attribs=array('pg_id','name','pg_address','lat','lng','pg_type');
$dom=new DOMDocument('1.0');
$root=$dom->createElement('tbl_master_property');
$dom->appendChild($root);
while( $rs=$result->fetch_object() ){
$node=$dom->createElement('tbl_master_property');
$root->appendChild($node);
foreach( $attribs as $attrib ){
$attr = $dom->createAttribute($attrib);
$value= $dom->createTextNode($rs->$attrib);
$attr->appendChild($value);
$node->appendChild($attr);
}
}
echo $dom->saveXML();
?>
here my script code:
<div class="map">
<div id="map"></div>
<script>
var customLabel = {
restaurant: {
label: 'R'
},
bar: {
label: 'B'
}
};
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: new google.maps.LatLng(-33.863276, 151.207977),
zoom: 12
});
var infoWindow = new google.maps.InfoWindow;
// Change this depending on the name of your PHP or XML file
downloadUrl('https://storage.googleapis.com/mapsdevsite/json/mapmarkers2.xml', function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName('marker');
Array.prototype.forEach.call(markers, function(markerElem) {
var id = markerElem.getAttribute('id');
var name = markerElem.getAttribute('name');
var address = markerElem.getAttribute('address');
var type = markerElem.getAttribute('type');
var point = new google.maps.LatLng(
parseFloat(markerElem.getAttribute('lat')),
parseFloat(markerElem.getAttribute('lng')));
var infowincontent = document.createElement('div');
var strong = document.createElement('strong');
strong.textContent = name
infowincontent.appendChild(strong);
infowincontent.appendChild(document.createElement('br'));
var text = document.createElement('text');
text.textContent = address
infowincontent.appendChild(text);
var icon = customLabel[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
label: icon.label
});
marker.addListener('click', function() {
infoWindow.setContent(infowincontent);
infoWindow.open(map, marker);
});
});
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDvyRXDlH8lyIFaFMPldx_hK2Nfh-hduDE&callback=initMap">
</script>
</div>
解决方案
Following on from the previous question and answer I gave you should find the following of interest perhaps.
<?php
if( $_SERVER['REQUEST_METHOD']=='GET' && !empty( $_GET['action'] ) && $_GET['action']=='getXML' ){
$dbhost = 'localhost';
$dbuser = 'root';
$dbpwd = 'xxx';
$dbname = 'xxx';
$db = new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );
$sql='select * from `markers`;';
$result=$db->query( $sql );
$attribs=array('id','name','address','lat','lng','type');
$dom=new DOMDocument('1.0','utf-8');
$dom->formatOutput=true;
$dom->standalone=true;
$dom->recover=true;
$root=$dom->createElement('tbl_master_property');
$dom->appendChild( $root );
while( $rs=$result->fetch_object() ){
$node=$dom->createElement('marker');
$root->appendChild( $node );
foreach( $attribs as $attrib ){
$attr = $dom->createAttribute( $attrib );
$value= $dom->createTextNode( $rs->$attrib );
$attr->appendChild( $value );
$node->appendChild( $attr );
}
}
header('Content-Type: application/xml');
exit( $dom->saveXML() );
}
?>
<!doctype html>
<html>
<head>
<meta charset='utf-8' />
<title>G00gle Maps</title>
<script>
var _markers=[];
function downloadUrl( url, callback ) {
var xhr = new XMLHttpRequest;
xhr.onreadystatechange = function() {
if( this.readyState == 4 && this.status==200 ) callback( this.responseXML );
};
xhr.open( 'GET', url, true );
xhr.send( null );
}
function initMap(){
var customLabel = {
restaurant:{ label:'R' },
bar:{ label:'B' }
};
var div=document.getElementById('map');
var options={
center: new google.maps.LatLng( -33.863276, 151.207977 ),
zoom: 12
};
var map = new google.maps.Map( div, options );
var infoWindow = new google.maps.InfoWindow;
var _callback=function( xml ){
var markers = Array.prototype.slice.call( xml.documentElement.getElementsByTagName('marker') );
markers.forEach(function(mkr){
var id=mkr.getAttribute('id');
var lat=mkr.getAttribute('lat');
var lng=mkr.getAttribute('lng');
var address=mkr.getAttribute('address');
var type=mkr.getAttribute('type');
var latlng=new google.maps.LatLng(lat,lng);
var label = customLabel[ type ] || {};
console.info('id=%s lat=%s lng=%s address=%s type=%s',id,lat,lng,address,type);
var marker = new google.maps.Marker({
map: map,
position: latlng,
title:address
});
marker.addListener('click', function(e) {
console.info( e.latLng.lat() +','+e.latLng.lng() );
infoWindow.setContent( decodeURI( address ) );
infoWindow.open( map, marker );
});
_markers.push( marker );
});
}
/* fetch the xml data */
var xml=downloadUrl( '?action=getXML', _callback );
}
</script>
<script async defer src="//maps.googleapis.com/maps/api/js?key=AIzaSyDvyRXDlH8lyIFaFMPldx_hK2Nfh-hduDE&callback=initMap"></script>
<style type='text/css' charset='utf-8'>
#map{
width:800px;
height:600px;
}
</style>
</head>
<body>
<div id='map'></div>
</body>
</html>
这篇关于如何在PHP中使用多个位置和多个标记显示Google地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文