我试图仅为名为“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 画布的上下文,map.getCanvas().getContext('2d')但它返回 null。
有没有办法做到这一点?
myFeatureProperty 是 true 或 false 我希望过滤器为 true(如果它的值为 true)我尝试了此操作并收到“发出验证错误”(mapbox 错误没有说明什么是无效的):
let filter = ['==', ['get',"myFeatureProperty"],true, true, false]
知道为什么我会收到此错误吗?我找不到这个简单任务的任何示例。mapbox-gl-js 最新版本的正确表达式语法是什么?
谢谢,唐尼
这个问题是关于 Mapbox Studio 的。我的用例显示了各个国家之间的税务条约地图,其中一些非常小的国家由于是避税天堂而很重要,例如毛里求斯。毛里求斯岛的标签仅在地图缩放级别 2 或更高级别上显示,而将此标签显示在与其他较大国家相同的显着位置会很有用。标签是否被烘焙到 Mapbox 图块中,或者是否有办法控制它们何时出现?
我发现您可以进一步过滤显示哪些国家/地区,但无法控制它们显示的缩放级别的初始设置。
我有 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) 我成功地将 @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)
* 我需要的只是用户在地图上选择的坐标 谢谢 *
因此,在 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) 假设我有以下 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) 是否可以使 Mapbox 上的默认 POI 标记可操作/可点击?
不是作为图层包含的自定义 POI 标记,而是每个地图中包含的默认 POI 标记?
在下面的屏幕截图中,您可以看到蓝色和棕色的默认 POI 标记:
Central Station,Campbria Hotel,Homewood Suites,Minute Maid Park, ETC。
这些 POI 标记会在缩放时显示,并且不会作为单独的图层添加。我想让它们变得可行。
理想的行为是弹出地图,其中包含相关的 OSM POI 信息,例如 Google 地图。但即使直接链接到 OSM 位置也是可以接受的。
例如,如果用户单击Minute Maid Park下面的 POI 图标,是否可以将用户重定向到关联的 OSM 位置?(https://www.openstreetmap.org/way/129025430)
我可以通过 GeoJSON 源/图层使用自定义标记来执行此操作,但我想访问所有默认 POI 标记,而不是一小部分自定义标记。
mapbox ×10
mapbox-gl-js ×6
javascript ×3
mapbox-gl ×3
canvas ×1
css ×1
geojson ×1
google-maps ×1
html ×1
html5-canvas ×1
mkmapview ×1
react-native ×1
reactjs ×1
swift ×1
swiftui ×1