Asp.net mvc 在asp.net mvc中跨域打开kmz文件
我在通过google earth api打开kmz文件时遇到问题。当我在服务器上提供指向文件的静态链接时,它可以正常工作:Asp.net mvc 在asp.net mvc中跨域打开kmz文件,asp.net-mvc,google-earth,kmz,Asp.net Mvc,Google Earth,Kmz,我在通过google earth api打开kmz文件时遇到问题。当我在服务器上提供指向文件的静态链接时,它可以正常工作: google.earth.fetchKml(ge, 'http://10.122.150.183:8008/test.kmz', checkForCoordinates); 但当我更改另一个域(即WCF服务)上文件的链接时:'https://10.122.150.183:4431/Uploads/1/test.kmz“,文件无法在google earth中打开。我尝试了另
google.earth.fetchKml(ge, 'http://10.122.150.183:8008/test.kmz', checkForCoordinates);
但当我更改另一个域(即WCF服务)上文件的链接时:'https://10.122.150.183:4431/Uploads/1/test.kmz“
,文件无法在google earth中打开。我尝试了另一种解决方案:从ASP.Net MVC控制器动态提供kmz文件,返回:
return File(fileStream, "application/vnd.google-earth.kmz kmz", fileName);
如果我尝试从浏览器的地址栏中获取它,效果很好,但是当我在fetchKml
方法中提供指向该操作的链接时,该操作甚至没有inovoke
关于如何从另一个域打开kmz文件,有什么建议吗?我认为通过指定MIME类型,您的思路是正确的。你已经看到了这个页面上的信息
我已经在wcf中实现了Kmz文件生成器。该服务返回流类型对象,传出响应内容类型设置为“application/vnd.google earth.kmz” 代码如下所示
public class Kmz
{
public static Stream Generate(string stringKml, string fileName)
{
MemoryStream stream = new MemoryStream();
using (ZipFile zip = new ZipFile())
{
zip.AddEntry(fileName, stringKml);
zip.Save(stream);
}
WebOperationContext.Current.OutgoingResponse.ContentType = "application/vnd.google-earth.kmz";
stream.Position = 0;
return stream;
}
}
希望它能有所帮助。您也可以使用javascript的iframe或脚本方式加载kml内容,这两种方式允许您从不同的域加载资源,然后使用parseKml函数解析kml内容并将其添加到您的地球中 希望能有帮助