Javascript 谷歌地图分类

Javascript 谷歌地图分类,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我有一个我还没有解决的问题 我开发了一个小脚本来加载谷歌地图。此脚本使用HTML5确定您当前的位置,然后显示地图上的一些位置。这些是从MySQL数据库读取的位置 问题是,不知何故,我需要按类别对它们进行筛选。PHP文件负责从MySQL数据库生成XML文件 我可以传递以下参数来选择类别:file.php?category=something downloadUrl("file.php?cat=something", function(data) { var markers = da

我有一个我还没有解决的问题

我开发了一个小脚本来加载谷歌地图。此脚本使用HTML5确定您当前的位置,然后显示地图上的一些位置。这些是从MySQL数据库读取的位置

问题是,不知何故,我需要按类别对它们进行筛选。PHP文件负责从MySQL数据库生成XML文件

我可以传递以下参数来选择类别:file.php?category=something

downloadUrl("file.php?cat=something", function(data) {
        var markers = data.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
        var marker = createMarker(markers[i].getAttribute("name"), markers[i].getAttribute("address"), markers[i].getAttribute("type"), latlng);
        }
        });
这是我的脚本的完整代码:

<!DOCTYPE html>
<html>
  <head>
    <title>Geolocalización</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="UTF-8">
    <link href="estilo.css" rel="stylesheet" type="text/css">

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
    <script type="text/javascript" src="util.js"></script>

  </head>
    <body onload="initialize()">
    <div id="info"></div>
        <div id="map_canvas" style="width: 780px; height: 600px; margin: 0 auto;"></div>

    <script type="text/javascript">
        var map;
        var infowindow;
        var geocoder;
        var marker;

        function initialize() {
        var myOptions = {
          zoom: 14,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);

        downloadUrl("phpsqlajax_genxml.php?cat=doctor", function(data) {
        var markers = data.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
        var marker = createMarker(markers[i].getAttribute("name"), markers[i].getAttribute("address"), markers[i].getAttribute("type"), latlng);
        }
        });

        function createMarker(name, address, type, latlng) {

        if(type=="doctor"){
        var image = 'clinicas-y-hospitales.png';
        }else{
        var image = 'carabineros-y-seguridad.png';
        }

        var contentString = '<h2>'+name+'</h2> <br /><p>'+address+'</p>';   

        var marker = new google.maps.Marker({position: latlng, map: map, icon: image});
        google.maps.event.addListener(marker, "click", function() {
        if (infowindow) infowindow.close();
            infowindow = new google.maps.InfoWindow({content: contentString, maxWidth: 200});
            infowindow.open(map, marker);
        });
        return marker;
        }

        geocoder = new google.maps.Geocoder();

        // Try HTML5 geolocation
        if(navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(function(position) {
            var pos = new google.maps.LatLng(position.coords.latitude,
            position.coords.longitude);
            map.setCenter(pos);

        geocoder.geocode({'latLng': pos}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
        if (results[1]) {
          marker = new google.maps.Marker({
              position: pos,
              map: map
          });

          infowindow = new google.maps.InfoWindow({content: '<p><strong>Usted está aquí:</strong> '+results[1].formatted_address+'</p>'});
          infowindow.open(map, marker);

          document.getElementById('info').innerHTML = results[1].formatted_address;
        }
        } else {
        alert("Geocoder failed due to: " + status);
        }
        });

          }, function() {
            handleNoGeolocation(true);
          });

        } else {
          // Browser doesn't support Geolocation
          handleNoGeolocation(false);
        }
      }

        function handleNoGeolocation(errorFlag) {
        if (errorFlag) {
          var content = 'Error: La geolocalización ha fallado.';
        } else {
          var content = 'Error: Tu navegador no soporta geolocalización.';
        }

        var options = {
          map: map,
          position: new google.maps.LatLng(60, 105),
          content: content
        };

        var infowindow = new google.maps.InfoWindow(options);
        map.setCenter(options.position);
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>

    </body>
</html>

地理本地化
var映射;
var信息窗口;
var地理编码器;
var标记;
函数初始化(){
变量myOptions={
缩放:14,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById('map_canvas'),myOptions);
下载URL(“phpsqlajax_genxml.php?cat=doctor”),函数(数据){
var markers=data.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i'+address+'

'; var marker=new google.maps.marker({position:latlng,map:map,icon:image}); google.maps.event.addListener(标记“单击”,函数(){ if(infowindow)infowindow.close(); infowindow=new google.maps.infowindow({content:contentString,maxWidth:200}); 信息窗口。打开(地图、标记); }); 返回标记; } geocoder=新的google.maps.geocoder(); //试试HTML5地理定位 if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(函数(位置){ var pos=新的google.maps.LatLng(position.coords.latitude, 位置坐标经度); 地图设置中心(pos); geocoder.geocode({'latLng':pos},函数(结果,状态){ if(status==google.maps.GeocoderStatus.OK){ 如果(结果[1]){ marker=新的google.maps.marker({ 职位:pos,, 地图:地图 }); infowindow=new google.maps.infowindow({content:'Usted estáaqí:'+results[1]。格式化的地址+'

'}); 信息窗口。打开(地图、标记); document.getElementById('info').innerHTML=results[1]。格式化的地址; } }否则{ 警报(“地理编码器因“+状态”而失败); } }); },函数(){ 手持导航(真); }); }否则{ //浏览器不支持地理位置 手动定位(假); } } 函数handleNogeLocation(errorFlag){ 如果(错误标志){ var content='错误:La geologización ha fallado'; }否则{ var content='错误:Tu navegador no soporta geologización'; } 变量选项={ 地图:地图, 职位:新google.maps.LatLng(60105), 内容:内容 }; var infowindow=new google.maps.infowindow(选项); 地图设置中心(选项位置); } google.maps.event.addDomListener(窗口“加载”,初始化);
要查看正在运行的脚本,请执行以下操作:

我需要做的类似示例如下:

非常感谢任何能在代码方面给我想法或帮助的人


您好。

您应该尝试放置一个按钮或链接,并实现调用以获取xml

如果您需要进一步的帮助,请在()中制作一个工作示例,并将其发布在评论中,以便我们可以查看

<!DOCTYPE html>
<html>
  <head>
    <title>Geolocalización</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="UTF-8">
    <link href="estilo.css" rel="stylesheet" type="text/css">

    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
    <script type="text/javascript" src="util.js"></script>

  </head>
    <body onload="initialize()">
    <div id="info"></div>
        <div id="map_canvas" style="width: 780px; height: 600px; margin: 0 auto;"></div>

    <script type="text/javascript">
        var map;
        var infowindow;
        var geocoder;
        var marker;

        function initialize() {
        var myOptions = {
          zoom: 14,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);

        downloadUrl("phpsqlajax_genxml.php?cat=doctor", function(data) {
        var markers = data.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
        var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
        parseFloat(markers[i].getAttribute("lng")));
        var marker = createMarker(markers[i].getAttribute("name"), markers[i].getAttribute("address"), markers[i].getAttribute("type"), latlng);
        }
        });

        function createMarker(name, address, type, latlng) {

        if(type=="doctor"){
        var image = 'clinicas-y-hospitales.png';
        }else{
        var image = 'carabineros-y-seguridad.png';
        }

        var contentString = '<h2>'+name+'</h2> <br /><p>'+address+'</p>';   

        var marker = new google.maps.Marker({position: latlng, map: map, icon: image});
        google.maps.event.addListener(marker, "click", function() {
        if (infowindow) infowindow.close();
            infowindow = new google.maps.InfoWindow({content: contentString, maxWidth: 200});
            infowindow.open(map, marker);
        });
        return marker;
        }

        geocoder = new google.maps.Geocoder();

        // Try HTML5 geolocation
        if(navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(function(position) {
            var pos = new google.maps.LatLng(position.coords.latitude,
            position.coords.longitude);
            map.setCenter(pos);

        geocoder.geocode({'latLng': pos}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
        if (results[1]) {
          marker = new google.maps.Marker({
              position: pos,
              map: map
          });

          infowindow = new google.maps.InfoWindow({content: '<p><strong>Usted está aquí:</strong> '+results[1].formatted_address+'</p>'});
          infowindow.open(map, marker);

          document.getElementById('info').innerHTML = results[1].formatted_address;
        }
        } else {
        alert("Geocoder failed due to: " + status);
        }
        });

          }, function() {
            handleNoGeolocation(true);
          });

        } else {
          // Browser doesn't support Geolocation
          handleNoGeolocation(false);
        }
      }

        function handleNoGeolocation(errorFlag) {
        if (errorFlag) {
          var content = 'Error: La geolocalización ha fallado.';
        } else {
          var content = 'Error: Tu navegador no soporta geolocalización.';
        }

        var options = {
          map: map,
          position: new google.maps.LatLng(60, 105),
          content: content
        };

        var infowindow = new google.maps.InfoWindow(options);
        map.setCenter(options.position);
      }
      google.maps.event.addDomListener(window, 'load', initialize);
    </script>

    </body>
</html>