Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Google Maps中的XML文件加载标记_Php_Mysql_Xml_Google Maps_Google Maps Api 3 - Fatal编程技术网

Php 如何从Google Maps中的XML文件加载标记

Php 如何从Google Maps中的XML文件加载标记,php,mysql,xml,google-maps,google-maps-api-3,Php,Mysql,Xml,Google Maps,Google Maps Api 3,我在谷歌地图中显示XML文件时遇到问题 我的概念:MySQL->XML->ShowtoGMAP 这是我的密码: Index.php <!DOCTYPE html > <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charse

我在谷歌地图中显示XML文件时遇到问题

我的概念:MySQL->XML->ShowtoGMAP

这是我的密码:

Index.php

<!DOCTYPE html >
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>ODP Tracking</title>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
    <script type="text/javascript">

    var customIcons = {
      FTTH: {     
        icon:"/images/ico_tag.png"
      },
      MSAN: {     
        icon:"/images/ico_tag_ms.png"
      },
      DSLAM: {     
        icon:"/images/ico_tag_ds.png"
      },
      bar: {    
        icon:'http://labs.google.com/ridefinder/images/mm_20_red.png'
      }
    };

    function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(load);
    } else { 
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
    }

function updateMarkerPosition(latLng) {
  document.getElementById('latitude').value = [latLng.lat()]
    document.getElementById('longitude').value = [latLng.lng()]
}
function load(position) {
      var map = new google.maps.Map(document.getElementById("map"), {
        center: new    google.maps.LatLng(position.coords.latitude,position.coords.longitude),
        zoom: 17,
        mapTypeId: 'roadmap'
      });
      var infoWindow = new google.maps.InfoWindow;

var latLng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var url = "phpsqlajax_genxml.php";

var marker2 = new google.maps.Marker({
    position : latLng,
    title : 'Lokasi',
    map : map,
    draggable : false
  });

      // Change this depending on the name of your PHP file
      downloadUrl(url, function(data) {
        var xml = data.responseXML;
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var name = markers[i].getAttribute("name");
          var kap = markers[i].getAttribute("kap");
          var avai = markers[i].getAttribute("avai");
          var type = markers[i].getAttribute("type");
          var note = markers[i].getAttribute("ket");
          var point = new google.maps.LatLng(
              parseFloat(markers[i].getAttribute("lat")),
              parseFloat(markers[i].getAttribute("lang")));
          var html = "<b>" + name + "</b> <br/>ALPRO : " + type + "<br/>KAP : " + kap + "<br/>AVAI : " + avai + "<br/>KETERANGAN : " + ket ;
          var icon = customIcons[type] || {};

          var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon
          });

          bindInfoWindow(marker, marker2, map, infoWindow, html);

        }
      });

        updateMarkerPosition(latLng);
        google.maps.event.addListener(marker2, 'drag', function() {
        updateMarkerPosition(marker2.getPosition());
  });


    }


    function bindInfoWindow(marker, marker2, map, infoWindow, html) {
        google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker, marker2);
      });
    }

    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>


  </head>


 <body onload="getLocation()">
 <style>
html, body, #map {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
}
#map {
    position: relative;
}
</style>
    <div id="map"></div>
  </body>

</html>

ODP跟踪
var customIcons={
FTTH:{
图标:“/images/ico_tag.png”
},
MSAN:{
图标:“/images/ico_tag_ms.png”
},
DSLAM:{
图标:“/images/ico_tag_ds.png”
},
酒吧:{
图标:'http://labs.google.com/ridefinder/images/mm_20_red.png'
}
};
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(加载);
}否则{
x、 innerHTML=“此浏览器不支持地理位置。”;
}
}
函数更新标记位置(latLng){
document.getElementById('latitude')。值=[latLng.lat()]
document.getElementById('longitude')。值=[latLng.lng()]
}
功能负载(位置){
var map=new google.maps.map(document.getElementById(“map”){
中心:新的google.maps.LatLng(位置.坐标.纬度,位置.坐标.经度),
缩放:17,
mapTypeId:“路线图”
});
var infoWindow=new google.maps.infoWindow;
var latLng=new google.maps.latLng(position.coords.latitude,position.coords.longitude);
变量纬度=位置坐标纬度;
var经度=position.coords.longitude;
var url=“phpsqlajax\u genxml.php”;
var marker2=新的google.maps.Marker({
位置:latLng,
标题:“Lokasi”,
地图:地图,
可拖动:错误
});
//根据PHP文件的名称更改此选项
下载url(url、函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;iALPRO:“+type+”
KAP:“+KAP+”
avi:“+avi+”
凯特兰根:“+ket; var icon=customIcons[type]| |{}; var marker=new google.maps.marker({ 地图:地图, 位置:点,, 图标:icon.icon }); bindInfoWindow(marker、marker2、map、infoWindow、html); } }); 更新市场定位(latLng); google.maps.event.addListener(marker2,'drag',function(){ updateMarkerPosition(marker2.getPosition()); }); } 函数bindInfoWindow(marker、marker2、map、infoWindow、html){ google.maps.event.addListener(标记'click',函数(){ setContent(html); 打开(地图、标记、标记2); }); } 函数下载url(url,回调){ var请求=window.ActiveXObject? 新的ActiveXObject('Microsoft.XMLHTTP'): 新的XMLHttpRequest; request.onreadystatechange=函数(){ if(request.readyState==4){ request.onreadystatechange=doNothing; 回调(请求、请求、状态); } }; 打开('GET',url,true); 请求发送(空); } 函数doNothing(){} html,body,#map{ 宽度:100%; 身高:100%; 保证金:0; 填充:0; } #地图{ 位置:相对位置; }
这是我的XML解析代码

phpsqlajax_genxml.php

<?php
require("phpsqlajax_dbinfo.php");

function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','&lt;',$htmlStr);
$xmlStr=str_replace('>','&gt;',$xmlStr);
$xmlStr=str_replace('"','&quot;',$xmlStr);
$xmlStr=str_replace("'",'&#39;',$xmlStr);
$xmlStr=str_replace("&",'&amp;',$xmlStr);
$xmlStr=str_replace("-",'&#45;',$xmlStr);
$xmlStr=str_replace("/",'&#47;',$xmlStr);
return $xmlStr;
}

// Create connection
$conn = new mysqli('localhost', $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);}

// Select all the rows in the markers table
$sql = "SELECT * FROM koordinat_odp";

$result = $conn->query($sql);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for each
while ($row = $result->fetch_assoc()){
  // ADD TO XML DOCUMENT NODE
  echo '<marker ';
  echo 'name="' . parseToXML($row['nama_dp']) . '" ';
  echo 'kap="' . $row['kap'] . '" ';
  echo 'avai="' . $row['avai'] . '" ';
  echo 'lat="' . $row['lat'] . '" ';
  echo 'lang="' . $row['lang'] . '" ';
  echo 'type="' . $row['jenis_alpro'] . '" ';
  echo 'ket="' . $row['note'] . '" ';
  echo '/>';
}

// End XML file
echo '</markers>';

?>
connect\u错误){
die(“连接失败:“.$conn->connect_error);}
//选择标记表中的所有行
$sql=“选择*来自协调的odp”;
$result=$conn->query($sql);
如果(!$result){
die('无效查询:'.mysql_error());
}
标题(“内容类型:text/xml”);
//启动XML文件,回显父节点
回声';
//遍历行,为每个行打印XML节点
而($row=$result->fetch_assoc()){
//添加到XML文档节点
回声';
}
//结束XML文件
回声';
?>
我的问题是:它不能在地图上显示标记,我自己在浏览器中生成xml文件,它可以工作,但不能在GMAP中显示


提前感谢您的帮助。

我想您的答案可以找到


您为什么要使用XML而不是JSON?能否提供XML输出的示例?(这表明你的问题是最好的)@JoshHarington:对不起,伙计,我不太了解你的问题json@geocodezip:已经尝试过了,但我的代码与此相同,没有希望:'(
function parseXML(xml){
var bounds = new google.maps.LatLngBounds();
 $(xml).find("marker").each(function(){
        //Read the name, address, latitude and longitude for each Marker
        var name = $(this).find('name').text();
        var kap = $(this).find('kap').text();
        var avai = $(this).find('avai').text();
        var note = $(this).find('ket').text();
        var type = $(this).find('type').text();
        var lat = $(this).find('lat').text();
        var lng = $(this).find('lng').text();
        var markerCoords = new google.maps.LatLng(parseFloat(lat), 
                                                  parseFloat(lng));
        bounds.extend(markerCoords);
        var marker = new google.maps.Marker({position: markerCoords, map:map});
    });
    map.fitBounds(bounds);
}