php – 地理定位:使用OpenStreetMap进行映射和POI
我正在建立一个网站,访问者在地图上显示其位置,并在选定的半径(例如10公里)内,访问者可以看到一些POI(例如餐馆,酒吧).
到目前为止我有这个代码: <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0,user-scalable=no" /> <style type="text/css"> html { height: 100% } body { height: 100%; margin: 0; padding: 0 } #map_canvas { height: 100% } </style> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=[MY_KEY]&sensor=false"> </script> <script type="text/javascript"> function init() { if(navigator.geolocation) { navigator.geolocation.getCurrentPosition (processPosition,handleError); } else { alert("Geolocation not supported in this browser"); } } function processPosition(pos) { var latlng = new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude); var myOptions = { center: latlng,zoom: 16,mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); var marker = new google.maps.Marker({ position: latlng,map: map,title:"You are here! (at least within a "+pos.coords.accuracy+" meter radius)" }); } function handleError(err) { alert('An error occurred: ' + err.code); } </script> </head> <body onload="init()"> <div id="map_canvas" style="width:100%; height:100%"></div> </body> </html> 它使用谷歌地图向我展示了我在带有标记的地图上的位置. 解决方法
如果您想使用OpenStreetMap数据,您应该查看
OpenLayers.这与Google Maps或Bing Maps API的工作方式略有不同:您必须在服务器上安装OpenLayers JavaScript库,并负责显示地图数据(“地图图块”)可以来自各种来源:OpenStreetMap(OSM),谷歌地图,您自己的自定义地图数据等.
OpenStreetMap website本身使用OpenLayers来显示地图.
1:有documentation(虽然我恐怕不如谷歌地图API那么好)和大量的examples,包括一些使用OpenStreetMap数据,单独或与谷歌数据一起使用(在“过滤器”中输入“osm”)顶部的方框). 2:对于POI,你可以像在this example一样在地图上放置一个“Marker Layer”,包括点击图标时出现的可自定义的标记图标和气泡,但你必须处理POI和搜索功能的数据你自己.因此,如果您愿意,您可以自由使用Google Places API,然后在OpenStreetMap上将结果显示为标记 – 只要您使用display“Powered by Google”徽标即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |