有人知道实现UNZIP算法的简单JavaScript库吗?没有磁盘文件访问权限,只能压缩和解压缩一串值.
有一些ActiveX,使用WinZIP和其他客户端相关的ZIP软件,用JS编写.但是没有纯JavaScript算法实现.
我会用它来显示带有GMap对象(谷歌地图)的HTML页面中的KMZ文件.KMZ文件只是一个压缩的KML文件.我想解压缩KMZ文件并将KML提供给GMap.
我希望这里有一个php天才可以帮助我.我有一个名为baeir的数据库表,它有以下字段:b_id(主键)
b_name
hrepparid(不需要显示)
stjarna(不需要显示)
lat
lng
注释
该表包含一个服务器场的名称( b_name),它的地理坐标(lat,lng)和注释 - 如果有的话.
我需要的是将这些数据放入kml文件中.我试图在谷歌的网页上阅读教程,我得到了它的工作但是一旦我尝试编辑,它就转到了h***.据我所知,kml文件基本上是一个xml文件,但不幸的是我的PHP技能不够先进,无法处理这个问题.
我希望有人能帮帮忙 :-))
这是我从谷歌的代码,它看起来有点太...详细我喜欢.任何想法如何简化代码,以便我可以将我的变量放入其中,没有别的?
<?php
require('phpsqlajax_dbinfo.php');
// Opens a connection to a MySQL server.
$connection = mysql_connect ($server, $username, $password);
if (!$connection)
{
die('Not connected : ' . mysql_error());
}
// Sets the active MySQL database.
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected)
{
die('Can\'t use db : ' . mysql_error());
}
// Selects all the rows in the markers table.
$query = 'SELECT * FROM markers …Run Code Online (Sandbox Code Playgroud) 我有一个具有以下结构的表:
id, - 主键
minlatitude - 正方形的边界点
minlongitude - 正方形maxlatitude的边界点 - 正方形maxlongitude的边界点 - 正方形的边界点
cetnerLatitude - 广场中心的中心 - 一个广场的中心
最小最大场创建一个正方形,中心Lat/Long用于正方形的中心点.
我想使用"xml路径"生成KML文件.生成的KML文件应类似于以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>example</name>
<description>
dafdafdsaf
</description>
<Point>
<coordinates>102.594411,14.998518</coordinates>
</Point>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
-77.05788457660967,38.87253259892824,100
-77.05465973756702,38.87291016281703,100
-77.05315536854791,38.87053267794386,100
-77.05788457660967,38.87253259892824,100
</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
</Document>
</kml>"""
Run Code Online (Sandbox Code Playgroud)
我开始解决xmlpath SQL查询,到目前为止得到以下结果:
declare @id int
set @id = 22438
declare @kml xml;
with XMLNAMESPACES(
'http://www.opengis.net/gml' as gml,
'http://www.georss.org/georss' as georss
)
select @kml =
(select some as id …Run Code Online (Sandbox Code Playgroud) 我正试图从.kml文件中获取坐标,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<name>Name</name><Style id="roadStyle"><LineStyle><color>7fcf0064</color><width>6</width></LineStyle></Style><Snippet><![CDATA[<font size=+1><a href="http://example.com/">Printable view</a></font>]]></Snippet>
<Placemark>
<name>Example</name>
<description><![CDATA[example]]></description><address>100 Example St</address><StyleMap><Pair><key>normal</key><Style><IconStyle><Icon><href>http://example.com</href></Icon><hotSpot x="0.000000" y="0.000000" xunits="fraction" yunits="fraction" /></IconStyle><ListStyle><ItemIcon><href>http://example.com</href></ItemIcon></ListStyle></Style></Pair><Pair><key>highlight</key><Style><IconStyle><scale>1.000000</scale><Icon><href>http://example.com</href></Icon><hotSpot x="0.000000" y="0.000000" xunits="fraction" yunits="fraction" /></IconStyle><ListStyle><ItemIcon><href>http://example.com</href></ItemIcon></ListStyle></Style></Pair></StyleMap><Point><coordinates>0.000000,0.000000,0</coordinates></Point><LookAt><longitude>0.000000</longitude><latitude>0.000000</latitude><range>100.000000</range><tilt>45.000000</tilt><heading>0.000000</heading></LookAt>
</Placemark>
<Placemark>
<name>Route</name>
<description><![CDATA[Example]]></description>
<GeometryCollection>
<LineString>
<coordinates>0.000000,0.000000,0.000000 0.000000,0.000000,0.000000 0.000000,0.000000,0.000000 0.000000,0.000000,0.000000 0.000000,0.000000,0.000000 0.000000,0.000000,0.000000 0.000000,0.000000,0.000000</coordinates>
</LineString>
</GeometryCollection>
<styleUrl>#roadStyle</styleUrl>
</Placemark>
</Document>
</kml>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用QXmlQuery来检索带有类似于此的XPath字符串的坐标:
kml/Document/Placemark[last()]/GeometryCollection/LineString/coordinates
Run Code Online (Sandbox Code Playgroud)
我在这里测试过并确认它有效,到目前为止一直很好.但是我在Qt工作时遇到了一段可怕的时间.我已经尝试了很多东西,包括其他帖子中有关SO的建议,没有运气.以下是一些显示变化的示例:
void testQuery1(QString &filename) {
QXmlQuery query;
query.bindVariable("kmlFile", QVariant(filename));
query.setQuery("declare default element namespace \"http://earth.google.com/kml/2.0\"; declare variable $kmlFile external; doc($kmlFile)//coordinates");
QStringList results;
query.evaluateTo(&results);
qDebug() << results.size();
}
void testQuery2(QString …Run Code Online (Sandbox Code Playgroud) 我有一个网站在谷歌地图上显示kml Line Strings作为自行车路线.
我想标记路线,但未能这样做.
我无法在Line String中添加气泡.我在路线上放置了一个地标,它显示为一个图标,但我找不到在它们上面贴标签的方法.我无法将图标更改为带有我需要的文字的png图标.
我一直在尝试不同的东西,通常看这些文件,但只是尝试了很多不同的东西.
https://developers.google.com/kml/documentation/mapsSupport
https://developers.google.com/kml/documentation/kmlelementsinmaps
我不确定这是不可能的,还是我做错了什么.
我能想到的唯一一件事就是在我想要显示标签的位置上以我需要的字符形状在Google地球中绘制一个Line String,但这看起来很傻,它应该比那更容易.
有没有人能够在kml文件中添加标签,以便在google-map API 3中显示?
有没有办法确定标记是否已进入KmlLayer覆盖的区域?我的.kml主要由<Polygon>一组定义边界的坐标组成.
我发现有一篇文章描述了一些类似于我正在寻找的文章,使用叠加创建:http://www.paulmcilwaine.com/api/google-maps-detecting-markers-in-a-particular-boundary
该方法具有使用getBounds()的优点,但我正在寻找一种方法来使用KmlLayer边界.KmlLayer似乎没有像getBounds()这样的方便函数,但是我确实在KML文件中拥有了所有可用的坐标,所以我认为有一种方法可以创建自己的getBounds()函数.我只需要一种方法来确定标记(或latlang)是否在KML文件中的那些坐标内.
谢谢你的任何想法!
我的应用程序中有一个谷歌地图组件,允许用户绘制多边形,线条和标记.现在我想实现一个按钮,允许用户导出他/她在地图中绘制的东西的kml文件.
有关这种方法的最佳方法的任何建议.
您的意见和贡献非常感谢
我不知道你是否看过惊人的Mytrack更新,但它允许将一个kml文件发送到Google Earth应用程序并将其显示在Google应用程序中(当然,如果已安装).

源代码在那里:http://code.google.com/p/mytracks/source/browse/
但我无法找到实现这一目标的方法.
我想我在这里找到了一些内容:http://code.google.com/r/jshih-mytracks3/source/browse/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java?specl = svn5178eb75934b7f0c4c23ec26b7d79a0787de18b8&R = 5178eb75934b7f0c4c23ec26b7d79a0787de18b8
else if (playTrack) {
Intent intent = new Intent()
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
硬编码方式提供此代码:
Intent intent = new Intent()
.addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("com.google.earth.EXTRA.tour_feature_id","tour")
.setClassName("com.google.earth", "com.google.earth.EarthActivity")
.setDataAndType(Uri.fromFile(new File("/sdcard/test.kml")),
"application/vnd.google-earth.kml+xml");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是上面的代码只显示了与此代码相同结果的路径:
Intent mapIntent = new Intent(Intent.ACTION_VIEW);
Uri uri1 = Uri.parse("file:///sdcard/test.kml");
mapIntent.setData(uri1);
startActivity(Intent.createChooser(mapIntent, "Sample"));
Run Code Online (Sandbox Code Playgroud)
我的目标是通过"播放"按钮获得相同的结果.
我有许多大型KML数据集,它们使用基于区域的网络链接层次结构来提供服务; 如KML参考中所述:
将Regions与NetworkLinks结合使用,可以创建指针层次结构,每个指针指向一个特定的子区域.如
<viewRefreshMode>以下KML文件所示,具有onRegion选项,该选项指定仅在Region处于活动状态时加载Region数据.如果为嵌套区域提供多个详细级别,则仅当用户的视点触发下一个加载时才会加载更大量的数据.
这在Google地球中加载时效果很好.
我现在希望使用Google Earth插件在应用程序中加载这些内容. 我需要通过Google Earth API访问加载的内容 ; (即附加单击事件,更改样式)以将内容集成到应用程序中.
问题是,我没有找到任何关于网络链接的"有载"事件的参考.在我看来,这将起作用的方式是:
我认为javascript看起来像下面这样.
请注意:这只是一个草图,可能有助于理解我的问题. 我不是问为什么这段代码不起作用.
//create network link
var networkLink = ge.createNetworkLink("");
networkLink.setName("Regionated hierarchy root");
// create a Link object
//the network-links contained in the kml that will be returned in this file
//are region-based; they will only be loaded when the user zooms into the relevant
//region.
var link = ge.createLink("");
link.setHref("http://foo.com/regionatedRoot.kml");
// attach the Link to the …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置矢量图层的单独特征的填充颜色.使用下面的代码,我想我将能够遍历这些功能并单独设置它们的填充样式,但是会出现一个奇怪的问题.如果没有setStyle函数,则会在控制台中记录功能的各种属性.id,名称和几何.大约有5个左右的功能被记录下来.基本上就像
room1
room2
room3
room4
room5
Run Code Online (Sandbox Code Playgroud)
每个下面的额外数据(id,几何)
但是当我添加用于设置功能填充的行时,我遇到了一个奇怪的问题.它似乎将循环挂在第一个功能上,并且控制台填满了该功能属性的日志,例如:
room1
room1
room1
room1
room1
room1
room1
Run Code Online (Sandbox Code Playgroud)
很长一段时间,到达firefox日志限制的点,它告诉我没有显示2000条目!
但从好的方面来说,第一个功能实际上确实改变了它的填充颜色!所以我认为我使用的代码行至少是一半!但肯定存在一些严重错误.
代码:
vector.getSource().on('change', function (evt) {
var source = evt.target;
if (source.getState() === 'ready') {
var features = vector.getSource().getFeatures()
for (var k in features) {
console.log(features[k].getProperties()['name']);
console.log(features[k].getProperties()['id']);
console.log(features[k].getGeometry()['n']);
features[k].setStyle(new ol.style.Style({fill: fill}));
}
}
});
Run Code Online (Sandbox Code Playgroud)
我真的不太了解OL3或造型功能,我通过大量的试验和猜测来达到这个目的.任何人都能指出我正确的方向吗?
kml ×10
javascript ×2
android ×1
export ×1
gis ×1
google-earth ×1
google-maps ×1
mysql ×1
openlayers-3 ×1
php ×1
qt ×1
qtxml ×1
sql ×1
sql-server ×1
unzip ×1
zip ×1