Php 搜索地址与google maps api v3上最近的现有位置标记之间的距离

Php 搜索地址与google maps api v3上最近的现有位置标记之间的距离,php,javascript,google-maps,google-maps-api-3,distance,Php,Javascript,Google Maps,Google Maps Api 3,Distance,我正在用谷歌地图API v3开发一个网页。我目前有一个功能地图和搜索栏。我需要能够显示从搜索地址到地图上一个KML文件上最近的地点标记的距离。我该怎么做 以下是该页面的代码: <script type="text/javascript"> var geocoder; var map; var marker; var layers = []; function initialize() { geocoder = new google.map

我正在用谷歌地图API v3开发一个网页。我目前有一个功能地图和搜索栏。我需要能够显示从搜索地址到地图上一个KML文件上最近的地点标记的距离。我该怎么做

以下是该页面的代码:

<script type="text/javascript">
    var geocoder;
    var map; 
    var marker;
    var layers = [];
  function initialize() {
    geocoder = new google.maps.Geocoder ();
    var latlng = new google.maps.LatLng (41, -73.4);
    var myOptions = {
      zoom: 7,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
        }
      map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
      marker = new google.maps.Marker({map:map});


        layers[0] = new google.maps.KmlLayer('http://dl.dropbox.com/u/80233620/South-and-North-County-Trailway.kml',
            {preserveViewport: true});
        layers[1] = new google.maps.KmlLayer('http://www.nyc.gov/html/dot/downloads/misc/cityracks.kml', 
            {preserveViewport: true});
        layers[2] = new google.maps.KmlLayer('http://dl.dropbox.com/u/80233620/NWS%20Radar%20Images.kmz', 
            {preserveViewport: true});
    for (var i = 0; i < layers.length; i++) {
                layers[i].setMap(map);
              }
        }

    function codeAddress () {
        var address = document.getElementById ("address").value;
        geocoder.geocode ( { 'address': address}, function(results, status)  {
        if (status == google.maps.GeocoderStatus.OK)  {
            map.setCenter(results [0].geometry.location);
            marker.setPosition(results [0].geometry.location);
            map.setZoom(14);
            } 
        else {
            alert("Geocode was not successful for the following reason: " + status);
                }
        }); 
                            }
    function toggleLayer(i) {
      if(layers[i].getMap() === null) {
        layers[i].setMap(map);
      }
      else {
        layers[i].setMap(null);}
    }

</script>

var地理编码器;
var映射;
var标记;
var层=[];
函数初始化(){
geocoder=newgoogle.maps.geocoder();
var latlng=新的google.maps.latlng(41,-73.4);
变量myOptions={
缩放:7,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“map_canvas”),
肌肽);
marker=newgoogle.maps.marker({map:map});
层[0]=新的google.maps.kmlayer('http://dl.dropbox.com/u/80233620/South-and-North-County-Trailway.kml',
{preserveViewport:true});
layers[1]=新的google.maps.Kmlayer('http://www.nyc.gov/html/dot/downloads/misc/cityracks.kml', 
{preserveViewport:true});
layers[2]=新的google.maps.Kmlayer('http://dl.dropbox.com/u/80233620/NWS%20Radar%20Images.kmz', 
{preserveViewport:true});
对于(变量i=0;i
您不能像这样访问KML层中的数据

由于KML可能包含大量功能,因此您可能无法访问 直接从KmlLayer对象获取要素数据。相反,作为功能 显示时,它们将呈现为类似可单击贴图API的外观 覆盖层


相反,您可以手动处理XML并添加标记,然后使用和
computedIstanceBeween()
获取距离。我通常将距离乘以一些数字来计算转弯数(距离公式得到的是直线距离)。我相信大约
1.2
是最准确的。

手动处理XML和添加标记是什么意思?您必须使用php打开XML文件,提取出点并添加标记。Google maps不允许您通过kml层访问该数据。我不熟悉php,如何使用它打开文件?Galen,我发现了另一个与此相关的问题,您的答案似乎适用于其他用户:。我能用同样的代码吗?如果是这样的话,你如何显示计算出的距离?这是行不通的,因为你的地图上没有标记,你有一个kml图层。从kml层中提取标记超出了这些注释的范围。