Javascript 谷歌地图分类
我有一个我还没有解决的问题 我开发了一个小脚本来加载谷歌地图。此脚本使用HTML5确定您当前的位置,然后显示地图上的一些位置。这些是从MySQL数据库读取的位置 问题是,不知何故,我需要按类别对它们进行筛选。PHP文件负责从MySQL数据库生成XML文件 我可以传递以下参数来选择类别:file.php?category=somethingJavascript 谷歌地图分类,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
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>