标签: leaflet

在选项卡式面板中未正确显示传单地图

我正在尝试使用Leaflet.js在Twitter Bootstrap的标签面板中显示一个地图,但是表现得很奇怪:

当我单击包含面板的选项卡时,地图顶部会出现灰色图层.如果我拖动并移动地图,我会看到其他瓷砖,但不是最初的瓷砖.

更奇怪的是,如果我调整浏览器的大小,突然它完美运行,直到我再次重新加载,所以我猜是css的一个问题,但我找不到问题.

此外,将地图放在选项卡式面板之外也很有效.

我在Firefox和Chrome中测试过,两者都有同样的问题.

我在jsfiddle中创建了一个测试,看它"活着":http: //jsfiddle.net/jasalguero/C7Rp8/1/

任何帮助真的很感激!

javascript css twitter-bootstrap leaflet

49
推荐指数
2
解决办法
2万
查看次数

如何在vue javascript中引用静态资产

我正在寻找引用静态资产的正确网址,例如Vue javascript中的图片.

例如,我正在使用自定义图标图像创建传单标记,我尝试了几个网址,但它们都返回了404 (Not Found):

Main.vue:

var icon = L.icon({
    iconUrl: './assets/img.png',
    iconSize:     [25, 25],
    iconAnchor:   [12, 12]
});
Run Code Online (Sandbox Code Playgroud)

我已经尝试将图像放在assets文件夹和静态文件夹中,没有运气.我是否必须告诉vue以某种方式加载这些图像?

javascript leaflet vue.js

49
推荐指数
6
解决办法
6万
查看次数

如何保护JavaScript API访问令牌?

有许多在线资源提供JavaScript API来访问他们的服务.为了更清楚,我将基于MapBox的示例提出问题,但这适用于各种域中的许多其他服务.

当有人想在Web应用程序中使用此类服务​​时(例如来自MapBox的地图图像),他们通常需要注册/注册并获取访问令牌才能访问该服务.

现在,如果我将从服务器端使用API​​ - 没有问题:我知道我的令牌安全地存储在服务器上的某个地方,并且仅在我的服务器和服务提供商之间的通信时"暴露".但是,在JavaScript API的情况下(例如,如果我使用Leaflet从MapBox渲染地图),我应该在JavaScript中将访问令牌暴露给用户的Web浏览器 - 因此它非常容易找到某人的访问令牌.在我的例子中,只需使用Leaflet访问任何网站并在Firefox中打开"开发工具",就可以在一分钟细致地阅读他们的JavaScript代码时显示他们使用的令牌.

然而,对于我来说,这个令牌应被视为非常安全的数据 - 基于此令牌提供的身份验证来跟踪服务使用情况.如果您根据其使用情况支付服务费用就变得非常关键,但即使您没有(例如,如果您使用免费/入门/非付费计划) - 服务使用有限,我想确定只有我使用它.

显然,有一些策略,例如服务提供商的IP /域过滤,但似乎并非所有服务提供商都支持这种策略 - 例如,MapBox似乎没有(或者我没有找到它).或者,最终,我可以通过我的网络服务器代理服务,但这非常重.

考虑到所有这些 - 有没有办法保护JavaScript API使用的访问令牌访问外部服务,前提是JavaScript是在用户的浏览器中执行的?

javascript security leaflet mapbox

46
推荐指数
4
解决办法
2万
查看次数

如何获得Leaflet for R使用100%的Shiny仪表板高度

我正在创建一个Shiny仪表板应用程序,其中仪表板主体应该显示一些地图.到目前为止,没有问题让地图扩展到整个身体的宽度,但它不知何故不愿意调整到整个高度. 在此输入图像描述

传单本身已经设置为覆盖100%的高度,但它不能解决问题.只要我对leafletOutput使用height属性,传单对象就不会显示,而且我留下了一个空框.

代码可以在下面找到:

library(shinydashboard)
library(leaflet)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(
    sidebarMenu(
      menuItem(
        "Maps", 
        tabName = "maps", 
        icon = icon("globe"),
        menuSubItem("Watersheds", tabName = "m_water", icon = icon("map")),
        menuSubItem("Population", tabName = "m_pop", icon = icon("map"))
      ),
      menuItem(
        "Charts", 
        tabName = "charts", 
        icon = icon("bar-chart"),
        menuSubItem("Watersheds", tabName = "c_water", icon = icon("area-chart")),
        menuSubItem("Population", tabName = "c_pop", icon = icon("area-chart"))
      )
    )
  ),
  dashboardBody(
    tabItems(
      tabItem(
        tabName = "m_water",
        box(
          title = "Baltic catchment areas",
          collapsible = TRUE,
          width = "100%", …
Run Code Online (Sandbox Code Playgroud)

r leaflet shiny shinydashboard

43
推荐指数
3
解决办法
1万
查看次数

带有Google卫星图层的Leaflet Map API

我对Leaflet Map API很感兴趣.

但是,我需要能够使用Google卫星图层.我无法找到有关如何将Google卫星图层添加到Leaflet的示例.我知道我仍然需要加载Google Maps API才能执行此操作(OpenLayers有一个示例).

satellite google-maps-api-3 leaflet

42
推荐指数
5
解决办法
7万
查看次数

Leaflet.js将地图置于一组标记的中心

即时通讯使用Leaflet.js,并希望某种方式将地图置于我所拥有的标记上,以便在页面启动时所有都在用户视图中.如果所有标记都聚集在一个小区域中,我希望地图缩小到仍然显示所有标记的水平.

我知道谷歌地图有自动中心功能,但我如何使用Leaflet.js进行此操作?

markers leaflet

42
推荐指数
1
解决办法
3万
查看次数

刷新传单映射:映射容器已初始化

我有一个页面,给用户选择,他可以切换我显示的传单地图.

在初始传单地图加载后,我的问题是当我想要刷新地图时.

我总是得到"地图容器已初始化":

问题在于:

var map = L.map('mapa').setView([lat, lon], 15);
Run Code Online (Sandbox Code Playgroud)

最初它加载得很好,但是当我在表单中选择另一个参数并希望再次显示地图时它会崩溃.

顺便说一句,我试图$('#mapa')在第二次之前使用jQuery 销毁并重新创建,setView()但它显示了相同的错误.

javascript leaflet

40
推荐指数
10
解决办法
8万
查看次数

在容器调整大小时调整传单映射的大小

我有一个<div>传单地图.在某些事件中,<div>将改变高度.我希望地图能够调整其周围的新尺寸,<div>以便旧中心位于调整大小较小或较大的地图中心.我尝试使用该invalidateSize()功能,但似乎根本不起作用.如何在map-container-resize事件发生后重新调整地图并使其居中?

$mapContainer.on('map-container-resize', function () {
   map.invalidateSize(); // doesn't seem to do anything
});
Run Code Online (Sandbox Code Playgroud)

编辑以提供更多上下文:

地图容器最初的样式为

#map-container {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;

    transition: height 0.5s ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)

用户单击某个按钮后,另一个面板显示在页面底部,地图容器的高度将减少到小于100%(例如80%).

单击此按钮后,将触发map-container-resize事件,以便我可以使地图调整大小并居中于旧的(即调整大小之前)中心.然后,地图本身也应调整到其初始高度的80%.

APi doc invalidateSize似乎是我想要的:

"检查地图容器大小是否已更改,如果是,则更新地图[...]"

但是getSize在调用invalidateSize之前和之后查看函数的输出,没有什么不同,地图保持其旧的大小.

javascript resize leaflet

40
推荐指数
6
解决办法
4万
查看次数

Leaflet.draw mapping:如何在没有工具栏的情况下启动绘图功能?

对于任何有传单或leaflet.draw插件的人:

我想在不使用工具栏的情况下开始绘制多边形leaflet.draw.我已经设法找到允许编辑的属性,而不使用工具栏(layer.editing.enable();)通过在线搜索(它不在主文档中).我似乎无法找到如何在没有工具栏按钮的情况下开始绘制多边形.任何帮助将非常感激!

谢谢 :)

javascript gis leaflet leaflet.draw

37
推荐指数
4
解决办法
2万
查看次数

Leaflet是非地图图像的好工具吗?

我正在编写一个Web应用程序,涉及导航技术插图(平移,缩放,单击).我认为Cloudmade Leaflet是一个很好的工具,只因为有人用它来制作XKCD 1110平移/缩放,我真的很喜欢它的结果.

显然,我需要平铺和扩展我原来的技术插图,但让我们说这是我解决的一个微不足道的问题.然而,看看Leaflet API,我似乎必须将我的技术插图(.ai,.svg和.png文件)转换为GeoJSON等地理标准.这似乎是一个尴尬的主张.

任何人都可以推荐Leaflet或任何其他工具来导航非地图图像?

javascript leaflet

36
推荐指数
2
解决办法
2万
查看次数