【问题标题】:Google maps doesn't link kml file谷歌地图不链接kml文件
【发布时间】:2013-05-01 09:07:22
【问题描述】:

我有一个创建 kml 文件的 PHP 函数。 (我验证了输出,它是一个有效的 KML 文件)。

然后,我用谷歌地图和这些文件,但我不知道为什么,地图上没有数据...

在 PHP 中,我有这个:

//some stuff here
return 'iniMap("", "", "http://my.web.com/Class/API/GMaps/Rep/'.$g->make($l, $a, $user).'.kml")';

这个函数是通过 AJAX 调用的,所以返回字符串会用 JS "eval()" 来计算。我的谷歌地图功能是:

/*GOOGLE MAPS FUNCTIONS*/
function iniMap(x,y,url){
    n=document.createElement('DIV');
    n.id='map_canvas';
    ge('con').appendChild(n);
    var latlng=new google.maps.LatLng(x,y);
    var map=new google.maps.Map(ge("map_canvas"),{zoom:6,center:latlng,mapTypeId:google.maps.MapTypeId.ROADMAP});
    var div1=document.createElement('DIV');
    var homeControl1=new makeControl(div1,'t1');
    var div2=document.createElement('DIV');
    var homeControl2=new makeControl(div2,'t2');
    var div3=document.createElement('DIV');
    var homeControl3=new makeControl(div3,'t3');
    var div4=document.createElement('DIV');
    var homeControl4=new makeControl(div4,'t4');
    var ctaLayer=new google.maps.KmlLayer(url);
    div1.index = 1;
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(div1);
    div2.index = 2;
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(div2);
    div3.index = 3;
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(div3);
    div4.index = 4;
    map.controls[google.maps.ControlPosition.TOP_RIGHT].push(div4);
    ctaLayer.setMap(map);
}

function makeControl(d,t){
    d.style.padding='5px';
    var controlUI=document.createElement('DIV');
    controlUI.style.backgroundColor='#FEFEFE';
    controlUI.style.borderStyle='solid';
    controlUI.style.borderWidth='1px';
    controlUI.style.cursor='pointer';
    controlUI.style.textAlign='center';
    controlUI.style.width='60px';
    controlUI.style.height='17px';
    d.appendChild(controlUI);
    var controlText=document.createElement('DIV');
    controlText.style.fontFamily='Arial,sans-serif';
    controlText.style.fontSize='12px';
    controlText.style.paddingLeft='4px';
    controlText.style.paddingRight='4px';
    controlText.innerHTML=t;
    controlUI.appendChild(controlText);
    google.maps.event.addDomListener(controlUI,'click',function(){doAction(t);});
}

function doAction(t){
    if(t=='t1'){document.location.href='http://my.web.com?t=sy0'}
    else if(t=='t2'){document.location.href='http://my.web.com?t=sm0'}
    else if(t=='t3'){document.location.href='http://my.web.com?t=sw0'}
    else if(t=='t4'){document.location.href='http://my.web.comt=sd0'}
}

我做错了什么? 谢谢!

【问题讨论】:

  • 是的。我的意思是,我可以把“my.web.com/Class/API/GMaps/Rep/name_of_file.kml”和谷歌浏览器下载它...
  • my.web.com 看起来不像是公开的网络服务器。问题是谷歌可以将它下载到他们的服务器来渲染图块,而不是你可以在浏览器中下载它。如果您将 URL 传递给 Google Maps,会发生什么情况,例如 this
  • 嗯,“my.web.com”只是一个例子......
  • 我想了很多,但你没有回答这个问题......

标签: google-maps google-maps-api-3 kml


【解决方案1】:

我解决了这个问题...

这是一个缓存问题。也许缓存了一些包含错误数据的文件,因此我的函数总是获取该错误文件...

今天改了生成文件名的方式,地图开始工作了……

感谢@geocodezip 提供的所有答案,很抱歉浪费了您的时间...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多