标签: mapbox

使用 Mapbox GL JS 表达式设置图标偏移

我试图仅为名为“marker_purple”的图标设置图标偏移量 [5, -19],所有其他图标的偏移量为 [0, 0]。我的尝试导致给定图层没有显示任何图标。该图层仅具有点几何类型,并且具有许多不同的图标类型。

我尝试过的:

"layout": {
  "icon-image": "{icon}",
  "icon-offset": [
    "case",
    ["==", ["get", "icon"], "marker_purple"],
    [5, -19],
    [0, 0]
  ]
}
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下方法,以防表达式无法返回数组,但仍然没有图标显示。

"layout": {
   "icon-image": "{icon}",
   "icon-offset": [
      [
         "case",
         ["==", ["get", "icon"], "marker_purple"],
         5,
         0
      ],
      [
         "case",
         ["==", ["get", "icon"], "marker_purple"],
         -19,
         0
      ]
    ]  
 }
Run Code Online (Sandbox Code Playgroud)

如果我指定一个不带表达式的偏移量,一切都会完美运行。

"icon-offset": [10,10] 
Run Code Online (Sandbox Code Playgroud)

所有图标移动 [10,10]

为了使表达式正常工作,我是否缺少某些东西?

感谢您花时间阅读本文以及您可以提供的任何帮助。

mapbox mapbox-gl mapbox-gl-js

2
推荐指数
1
解决办法
2146
查看次数

如何在 Mapbox Gl JS 矢量图层中突出显示单击功能,如第二张图片所示

如何突出显示图层中的要素。第一张图片显示了图层,第二张图片是单击时突出显示的所选功能。如何执行此操作?

Mapbox 中的矢量图层

选定的功能像这样突出显示

mapbox mapbox-gl mapbox-gl-js

2
推荐指数
1
解决办法
3743
查看次数

如何获取mapbox上像素的颜色

我的地图上有雷达光栅,我想通过光标的位置显示雷达的数据颜色。

雷达示例

我试图获取 Mapbox 画布的上下文,map.getCanvas().getContext('2d')但它返回 null。

有没有办法做到这一点?

javascript canvas html5-canvas mapbox mapbox-gl-js

2
推荐指数
1
解决办法
1604
查看次数

当要素属性为布尔值时,mapbox setFilter 表达式的正确语法是什么

myFeatureProperty 是 true 或 false 我希望过滤器为 true(如果它的值为 true)我尝试了此操作并收到“发出验证错误”(mapbox 错误没有说明什么是无效的):

let filter = ['==', ['get',"myFeatureProperty"],true, true, false]

知道为什么我会收到此错误吗?我找不到这个简单任务的任何示例。mapbox-gl-js 最新版本的正确表达式语法是什么?

谢谢,唐尼

mapbox mapbox-gl-js

2
推荐指数
1
解决办法
1237
查看次数

Mapbox - 是什么决定了国家/地区标签的显示缩放级别?

这个问题是关于 Mapbox Studio 的。我的用例显示了各个国家之间的税务条约地图,其中一些非常小的国家由于是避税天堂而很重要,例如毛里求斯。毛里求斯岛的标签仅在地图缩放级别 2 或更高级别上显示,而将此标签显示在与其他较大国家相同的显着位置会很有用。标签是否被烘焙到 Mapbox 图块中,或者是否有办法控制它们何时出现?

我发现您可以进一步过滤显示哪些国家/地区,但无法控制它们显示的缩放级别的初始设置。

mapbox

2
推荐指数
1
解决办法
2524
查看次数

Mapbox mapbox-gl-geocoder 容器重叠结果

我有 2 个标准的 mapbox mapbox-gl-geocoder 容器,一个接一个。当第一个容器的搜索结果出现在下拉列表中时,第二个容器会覆盖结果。我在 li、ul 等上尝试了 css z-index 1000,但没有任何效果。现在我结束了

geocoderStart.on('results', function(ev) {
            document.getElementById('geocoderEnd').style.visibility = "hidden";
        });
        geocoderStart._inputEl.addEventListener('input', function (e) { document.getElementById('geocoderEnd').style.visibility = "hidden"; });
        geocoderStart._inputEl.addEventListener('blur', function (e) { document.getElementById('geocoderEnd').style.visibility = "visible"; });
Run Code Online (Sandbox Code Playgroud)

但这是越野车。有没有一种简单的 css 方法可以用 li 结果覆盖第二个输入?谢谢

我的代码

const geocoderStart = new MapboxGeocoder({
            accessToken: mapboxgl.accessToken,
            mapboxgl: mapboxgl,
            countries: 'us',
            marker : false,
            flyTo : false,
            placeholder : "Starting point",
        });
        const geocoderEnd = new MapboxGeocoder({
            accessToken: mapboxgl.accessToken,
            mapboxgl: mapboxgl,
            countries: 'us',
            marker : false,
            flyTo : false,
            placeholder …
Run Code Online (Sandbox Code Playgroud)

javascript css mapbox mapbox-gl-js

2
推荐指数
1
解决办法
903
查看次数

React Native MapBox 获取点击位置

我成功地将 @react-native-mapbox-gl/maps 添加到我的项目中。现在我不需要用户的当前位置,但我只需要获取用户在地图上单击的位置的坐标(纬度和经度)。我已经尝试了一切,但没有任何效果!我的代码:

import MapboxGL, {MapView, UserLocation} from '@react-native-mapbox-gl/maps';

MapboxGL.setAccessToken(
    'MyAccessToken', );


export default class .... .... {

getLastLocation(location) {

        ToastMaker(location, 'short')

    }

render() {

        return (
                <View style={{flex: 1}}>
                    <View style={{height: '100%',
                        width: '100%',
                        backgroundColor: 'blue'}}>
                        <MapView style={{ flex: 1}}

                          //These Don't Work!
                        //onUserLocationUpdate={(property) => this.getLastLocation(property)}
                        //onLongPress={(property) => this.getLastLocation(property[0].coordinates)}
                        //onLongPress={(property) => this.getLastLocation(property.geometry) }
                        //onLongPress={(property) => ToastMaker(property.properties.screenPointY,'short') }
                       >
                            <MapboxGL.PointAnnotation
                                draggable={true}
                                id={'1'}
                                selected={true}
                                coordinate={this.state.coordinates}
                            />
                        </MapView>
                    </View>
                </View>
        )
    }

}
Run Code Online (Sandbox Code Playgroud)

* 我需要的只是用户在地图上选择的坐标 谢谢 *

google-maps openstreetmap mapbox reactjs react-native

2
推荐指数
1
解决办法
2945
查看次数

如何定义在运行使用自定义初始值设定项的结构实例时应运行的自定义闭包 (SwiftUI)

因此,在 MapView 中,我需要有一个自定义初始值设定项,如下定义。

import SwiftUI
import Mapbox

struct MapView: UIViewRepresentable {
    var configure: (MGLMapView) -> () = { _ in }
    @Binding var showMoreDetails: Bool
    var VModel: ViewModel
    var token: String

    init(showMoreDetails: Binding<Bool>, VModel: ViewModel, token: String) {
        self.VModel = VModel
        self.token = token
        _showMoreDetails = showMoreDetails
    }

    //This function creates the actual view of the map
    func makeUIView(context: Context) -> MGLMapView {
        let map = MGLMapView()
        DispatchQueue.main.async {
            map.delegate = context.coordinator
            self.configure(map)
        }
        return map
    }

    //This function is …
Run Code Online (Sandbox Code Playgroud)

mkmapview mapbox swift swiftui

2
推荐指数
1
解决办法
513
查看次数

缩放 MapBox GL 地图以适合标记集

假设我有以下 Mapbox 地图代码:

mapboxgl.accessToken = '<token>';
var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/satellite-v9',
    center: [-96, 37.8],
    zoom: 2,
    interactive: true
});

var geojson = {
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-77.03238901390978, 38.913188059745586]
            },
            "properties": {
                "id": 1,
                "color": "#007cbf",
                "text": "1"
            }
        }, 
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [-78.03238901390978, 39.913188059745586]
            },
            "properties": {
                "id": 2,
                "color": "red",
                "text": "2"
            }
        }
    ]
}

map.on('style.load', function (e) {
    map.addSource('markers', …
Run Code Online (Sandbox Code Playgroud)

html javascript mapbox

2
推荐指数
1
解决办法
3530
查看次数

如何启用默认 Mapbox POI 标记的点击?

是否可以使 Mapbox 上的默认 POI 标记可操作/可点击?

不是作为图层包含的自定义 POI 标记,而是每个地图中包含的默认 POI 标记?

在下面的屏幕截图中,您可以看到蓝色和棕色的默认 POI 标记:

Central StationCampbria HotelHomewood SuitesMinute Maid Park, ETC。

这些 POI 标记会在缩放时显示,并且不会作为单独的图层添加。我想让它们变得可行。

理想的行为是弹出地图,其中包含相关的 OSM POI 信息,例如 Google 地图。但即使直接链接到 OSM 位置也是可以接受的。

例如,如果用户单击Minute Maid Park下面的 POI 图标,是否可以将用户重定向到关联的 OSM 位置?(https://www.openstreetmap.org/way/129025430

我可以通过 GeoJSON 源/图层使用自定义标记来执行此操作,但我想访问所有默认 POI 标记,而不是一小部分自定义标记。

默认 MapBox POI

geojson mapbox mapbox-gl mapbox-gl-js mapbox-marker

2
推荐指数
1
解决办法
1402
查看次数