我正在使用OpenLayers在网页中显示地图.我正在使用来自CloudMade的磁贴,但OpenStreetMap中的Mapnik磁贴也会出现同样的问题.
我正在尝试限制地图,以便用户无法一直缩放到世界视图 - 我希望它们保持在大致城市级别的缩放至少.
我尝试过使用minZoomLevel/ maxZoomLevel/ numZoomLevels属性; 只有maxZoomLevel和numZoomLevels属性似乎有效,而minZoomLevel属性似乎完全被忽略了.
还有另一种方法来实现这一目标吗?
我正在尝试从Leaflet.js文档中解决如何在显示页面时打开多个弹出窗口.例如,如果一个人有三个标记(每个标记代表一个建筑物),每个标记都会立即打开它们的弹出窗口.
http://leaflet.cloudmade.com/reference.html#popup
密码说:
"使用Map#openPopup打开弹出窗口,同时确保一次只打开一个弹出窗口(推荐用于可用性),或者使用Map#addLayer打开任意数量的弹出窗口."
但
http://leaflet.cloudmade.com/reference.html#map-addlayer
没有提供关于如何实现这一点的提示.
任何人都可以澄清这是否可能,并给出任何关于如何做的提示?
我正在寻找一种在iOS 7中实现自定义地图样式的方法,就像使用Google地图一样.我发现一些帖子说这对MapKit来说是不可能的,但是它们都被发布了一段时间.为了澄清,按照风格我说的是自定义颜色,最好也是字体.下面是自定义Google地图样式的示例.
http://www.servendesign.com/wp-content/uploads/2011/12/zaarley-custom-google-maps.jpg
出于性能原因,我更喜欢使用MapKit,但如果不支持我,我也愿意使用其他框架.我见过的是MapBox和Cloudmade,当然还有Google Maps SDK.
有没有办法用MapKit做到这一点?如果没有,最好的方法是什么?
我们使用leafletJS来显示具有约100个标记的圆形图.这些标记中的一些位于完全相同的位置.Marker2高于Marker1,因此Marker1不可见.有没有办法旋转标记,你可以看到有多个标记?
我们正在使用Cloudmade SDK开发适用于iPad的离线城市地图应用程序.我很好奇,是否有其他SDK可以用于离线应用程序?
我有一个使用谷歌地图的iOS应用程序来显示有POI的城市.现在我也想提供一个离线地图,用户不需要显示数据连接.
我检查了OpenStreetMap项目,.osm这个城市的出口是5MB - 非常适合iOS应用.我还检查了routeme库,但是只使用了tile,并且没有生成矢量数据.它是否正确?PNG磁贴的文件大小对我的应用来说太大了.
哪个库有助于显示OSM-XML数据?我知道有云制,但这是正确的决定吗?我对他们的许可模式感到有点困惑.还有其他建议吗?提示?
任何人都可以建议我如何访问然后使用javascript动画红色折线:
http://gymloop.lukem.co.uk(登录:User2/pass2,然后选择'挑战')
我想要将折线从第一个标记设置为红线末端的动画(想想印第安纳琼斯,但没有地图移动而不使用谷歌地图).它需要是动态的,因为不同的用户将经历不同的距离.
我需要thew解决方案才能在FF,IE7 +和Chrome中运行
我正在使用cloudmade的传单地图,我很想避免使用谷歌地图.
我在gis的相关问题中有进一步的信息.stackexchange
我通过对现场Cloudmade的职位看这里,我得到了一些,但不是全部.我已经发布了下面的问题,但没有得到我需要的帮助,所以我想我会问这里的问题.
我可以看到我需要:
任何帮助都会受到热烈欢迎,
克里斯.
我正在尝试创建一个jquery手机移动应用程序,我想使用嵌入其中的传单地图.我现在正在做一个非常基本的概念验证,但我没有太多运气.每次我尝试加载地图时,地图的.png都不会加载,控制台会告诉我它是Forbidden.我想我可能错误地设置了地图网址,但是文档在CloudMade网站上有点模糊.我们将非常感谢您提供的任何帮助.
码:
var map = new L.Map('map');
var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/MY_APP_KEY/997/256/{z}/{x}/{y}.png',
cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18});
map.addLayer(cloudmade);
map.locateAndSetView(16);
map.on('locationfound', onLocationFound);
function onLocationFound(e) {
var radius = e.accuracy / 2;
var marker = new L.Marker(e.latlng);
map.addLayer(marker);
marker.bindPopup("You are within " + radius + " meters from this point").openPopup();
var circle = new L.Circle(e.latlng, radius);
map.addLayer(circle);
}
map.on('locationerror', onLocationError);
function onLocationError(e) {
alert(e.message);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试加载图像时,出现以下错误:获取http://a.tile.cloudmade.com/MY_APP_KEY/997/256/0/0/0/0pn 403(禁止).显然我正在用我从CloudMade获得的密钥替换MY_APP_KEY,但除此之外,我不知道还有什么地方可以转.
在此先感谢您的帮助.
我正在使用传单js来显示使用cloudmade瓷砖的世界地图.当我setMaxBounds到地图时,除了北方之外,边界工作得很好.然而,这不是我最关心的问题.我担心的是,正如我使用的那样,maxBounds我无法缩小以查看任何屏幕尺寸的整个世界.
我使用的界限从加拿大的东北角到澳大利亚的西南一直到达.我可以平移到达边界但不能缩小以查看整个地图.我设置minZoom为0.没有maxBound,它被缩小到太远,你可以看到世界在大屏幕上重复三次.
map = L.map('canvas',{zoomControl: false}).setView([38.82259, -2.8125], 0);
map.setMaxBounds([[84.67351256610522, -174.0234375], [-58.995311187950925, 223.2421875]]);
Run Code Online (Sandbox Code Playgroud)
任何帮助都是适当的.阿尼尔
我在我的项目OpenstreetMap和Leaflet中使用.添加图层:
L.tileLayer("http://{s}.tile.cloudmade.com/{my_key}/997/256/{z}/{x}/{y}.png",
attribution: "Map data © <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>, Imagery © <a href=\"http://cloudmade.com\">CloudMade</a>"
).addTo map
Run Code Online (Sandbox Code Playgroud)
但是今天我收到了CloudMade的一封信......
从5月1日起,我们将停止为您的API密钥提供服务.这意味着您可能在应用或网站中使用的地图平铺,地理编码和路由等CloudMade服务将停止工作.
如何在没有此API的情况下添加地图?
我正在使用谷歌地图地理编码器来获取地址的纬度和经度.我接着使用该地址并使用Leaflet并将地图平移到纬度+经度坐标.但是,我收到Firebug的错误说Error: Invalid LatLng object: (-33.8674869, 151.20699020000006, undefined).我知道我的变量geolocation返回-33.8674869, 151.20699020000006但不是undefined.是什么导致了这个问题?
<body onload="initialize()">
<div id="result"></div>
<div>
<input id="address" type="textbox" value="Sydney, NSW">
<input type="button" value="Geocode" onclick="codeAddress()">
</div>
<div id="map"></div>
<script type="text/javascript">
var map = L.map('map').setView([33.7489954, -84.3879824], 13);
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
}
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var geolocation = String(results[0].geometry.location);
var geolocation = geolocation.replace('(','');
var geolocation = geolocation.replace(')',''); …Run Code Online (Sandbox Code Playgroud)