草庐IT

leaflet-routing-machine

全部标签

javascript - 如何在 Leaflet 中将点从 [x,y] 坐标投影到 LatLng?

我正在使用Leaflet1.0.0rc3并且需要使用绝对像素值来修改map上的某些内容。因此,我想知道用户点击像素的位置,然后将其转换回LatLng坐标。我尝试使用map.unproject(),这似乎是正确的方法(unproject()Leafletdocumentation)。但该方法产生的La​​tLng值与e.latlng的输出有很大不同。(例如,输入LatLng(52,-1.7)并输出LatLng(84.9,-177))。所以我一定是做错了什么。问题:将点从层(x,y)空间投影到LatLng空间的正确方法是什么?这是一个代码片段(fiddle:https://jsfiddle

javascript - 以编程方式折叠 Leaflet JS 层控件

LeafletJS层控件如何使用JS代码关闭?在桌面上,当鼠标光标离开控件时,控件会很好地关闭。但是,在手机上,用户需要点击控件外部才能关闭它。一旦用户在控件中选择了一个层,我想手动关闭它。 最佳答案 此控件的状态由leaflet-control-layers-expanded类控制。如果向leaflet-control-layers元素添加或删除此类,则可以控制状态。为简单起见,这些示例使用jQuery。展开控件:$(".leaflet-control-layers").addClass("leaflet-control-laye

javascript - 将 Leaflet LatLng 投影到平铺像素坐标

对于Canvas图层,如何访问特定图block的点击像素?给定像{lat:37.68816,lng:-119.76196}这样的LatLng,我如何:#1,检索正确的点击block,#2,block内的像素坐标?这两个都应该考虑maxNativeZoom。 最佳答案 需要像L.CRS.EPSG3857这样的CRS。map的CRS可通过map.options.crs访问。需要真正的缩放、图block大小(如256,但可能为512或更高maxNativeZoom)和像素原点,如map.getPixelOrigin():constlatl

javascript - react 路由器 : access history in rendered Route component

我知道有很多关于此的问题,但我似乎无法让它工作:我需要从通过路由呈现的子组件访问“历史记录”。(它从redux容器接收Prop)。我需要将历史对象传递给在每个路由中呈现的组件,这样我就可以this.props.history.push('/route')在子组件中。这个应用程序以前不太动态,所以每个Route都用component={someComponent}硬编码;但我发现在动态执行路由时,您需要使用render={()=>}.从component={}更改路线后至render={()=>...}我在子组件中丢失了历史记录。我的代码是这样的:importReact,{Compone

javascript - 将 Leaflet 与 WMTS 服务器一起使用?

是否可以使用Leafletjavascript库显示来自WMTS的map数据(网络map瓦片服务)基于服务器?Leaflet似乎不支持开箱即用的WMTS,但是是否有任何插件? 最佳答案 您可以使用此处实现的L.TileLayer.WMTS类:http://depot.ign.fr/geoportail/api/develop/tech-docs-js/examples/js/geoportalLeaflet.js这是结果:http://depot.ign.fr/geoportail/api/develop/tech-docs-js/

javascript - Node.js 路由 : Adding route handlers to an already instantiated http server

如何将路由处理程序添加到已存在且已实例化的http服务器?我发现的所有路由器(包括express)似乎都要求将它们传递到http.createServer()方法中。例如express:varserver=http.createServer(app);我的主要标准:以类似于sockjs的方式将路由添加到现有服务器做到了。不知道正在使用的路由器(如果有的话)不依赖于现有的路由器“app”对象来添加路由(使用路由库创建一个新的就可以了)。示例:将服务器传递给SockJSvarhttp_server=http.createServer();//agnosticsockjs_server.in

javascript - 在 Leaflet 中达到最大范围后禁用拖动

我正在使用自定义图像处理Leaflet,其图block是使用“zoomify”生成的。我目前面临以下问题:1)在最小缩放级别上,图像不应可拖动,这是使用map.dragging.disable()实现的。但是当图像当前处于最大缩放级别并且用户正在拖动时会出现问题,因为我不希望焦点超出图block,即用户一旦到达就不应看到“灰色边框”超出界限限制。是否可以使用Leaflet.例如,用户拖动图像,一旦灰色边框开始出现,拖动就会被禁用。虽然它确实通过设置bounceAtZoomLimits:false以及map.fitBounds()返回到当前位置,但这只是在用户结束拖动时。2)在双指缩放时

javascript - 标记不会出现在 Leaflet 的连续世界中

当我设置选项continuousWorld=true时,标记不会显示在克隆的图block上,只会显示在主世界上。它是设计行为吗?可能是我没有注意到的其他选项来显示这些标记的存在?UPD:我的目标是在每个世界上重复标记,如下图所示。我调查了continuousWorld和worldcopyjump不适合这个。那么是否可以使传单像图片上那样工作? 最佳答案 不幸的是,据我所知,没有自动和开箱即用的解决方案可以复制Leaflet世界相邻副本上的所有内容(标记、矢量等)。Tomislav提出的最简单的技巧是手动生成内容的额外副本,偏移360

javascript - Leaflet JS - 实现手势处理以强制执行 2 指滚动

您知道当您在移动设备上向下滚动带有谷歌地图的网页时。map变暗并告诉您“用两根手指移动map”。我想在我的Leafletmap中实现这一点。Leaflet目前不提供这种开箱即用的功能。Google将此功能称为手势处理。如果将其设置为“合作”,您将获得我刚才描述的效果。https://developers.google.com/maps/documentation/javascript/interaction如我的代码示例所示,检测所用手指的数量并显示消息非常容易。(您需要在移动设备或模拟器上运行它才能看到它的效果)如果是1根手指,我取消touchmove事件并显示我的警告。否则我允许事

javascript - this.route() 和 this.resource() 有什么区别?

我知道路由用于将URL映射到模板,但显然您可以使用this.route或this.resource定义路由App.Router.map(function(){this.route("about",{path:"/about"});this.route("favorites",{path:"/favs"});});App.Router.map(function(){this.resource('posts',{path:'/posts'},function(){this.route('new');});});如果您想为路线定义子路线,您是否只使用this.resource还是有其他我没有