标签: mapbox

使用 Mapbox 静态 api 绘制多边形

message: "Invalid GeoJSON"尝试将多边形添加到 Mapbox api 上的静态地图时, 我不断收到错误。

在下面的地图上:

https://api.mapbox.com/v4/mapbox.streets/geojson(%7B%22type%22%3A%22Feature%22%2C%22properties%22%3A%7B%7D%2C%22geometry%22%3A %7B%22type%22%3A%22LineString%22%2C%22坐标%22%3A%5B%5B-120.8492%2C39.4916%5D%2C%5B-120.8474%2C39.4896%5D%2C%5B-120.8510 %2C39.4864%5D%2C%5B-120.8492%2C39.4916%5D%5D%7D%7D),引脚-s-1+f44(-120.849200,39.491600,13),引脚-s-2+f44( -120.847400,39.489600,13),pin-s-3+f44(-120.851000,39.486400,13),geojson(%7B%22type%22%3A%22Feature%22%2C%22properties%22%3A%7B%22行程-宽度%22%3A4%2C%22笔画%22%3A%22%23ff4444%22%2C%22笔画不透明度%22%3A0.5%7D%2C%22几何%22%3A%7B%22类型%22%3A %22LineString%22%2C%22坐标%22%3A%5B%5B39.4916%2C%20-120.8492%5D%2C%5B39.4896%2C%20-120.8474%5D%2C%5B39.4864%2C%20 -120.8510%5D%2C%5B39.4888%2C%20-120.8496%5D%5D%7D%7D)/-120.849600,39.488800,15/800x400.png?access_token=token

我的 LineString 示例用于勾画我想要绘制的多边形的边框:

geojson({"type":"Feature","properties":{},"geometry":{"type":"LineString","coordinates":[[-120.8492,39.4916],[-120.8474,39.4896],[-120.8510,39.4864],[-120.8492,39.4916]]}})
Run Code Online (Sandbox Code Playgroud)

如果尝试使用以下 geojson 对象将其转换为多边形:

geojson({"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[-120.8492,39.4916],[-120.8474,39.4896],[-120.8510,39.4864],[-120.8492,39.4916]]}})
Run Code Online (Sandbox Code Playgroud)

它爆炸了:

https://api.mapbox.com/v4/mapbox.streets/geojson(%7B%22type%22%3A%22Feature%22%2C%22properties%22%3A%7B%7D%2C%22geometry%22%3A %7B%22类型%22%3A%22多边形%22%2C%22坐标%22%3A%5B%5B-120.8492%2C39.4916%5D%2C%5B-120.8474%2C39.4896%5D%2C%5B-120.8510 %2C39.4864%5D%2C%5B-120.8492%2C39.4916%5D%5D%7D%7D),引脚-s-1+f44(-120.849200,39.491600,13),引脚-s-2+f44( -120.847400,39.489600,13),pin-s-3+f44(-120.851000,39.486400,13),geojson(%7B%22type%22%3A%22Feature%22%2C%22properties%22%3A%7B%22行程-宽度%22%3A4%2C%22笔画%22%3A%22%23ff4444%22%2C%22笔画不透明度%22%3A0.5%7D%2C%22几何%22%3A%7B%22类型%22%3A %22LineString%22%2C%22坐标%22%3A%5B%5B39.4916%2C%20-120.8492%5D%2C%5B39.4896%2C%20-120.8474%5D%2C%5B39.4864%2C%20 -120.8510%5D%2C%5B39.4888%2C%20-120.8496%5D%5D%7D%7D)/-120.849600,39.488800,15/800x400.png?access_token=token

有人能看到我做错了什么吗?我在查找使用静态 api 绘制多边形的任何示例时遇到问题,但静态 api 文档说这是可能的。

谢谢。

api mapbox

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

根据用户在 Swift 中的方向旋转 Mapbox 地图

我正在寻找一个简单的导航应用程序,它总是根据用户的方向旋转。我已经看到了一些 Android 的答案,但还没有找到任何适用于 Swift 的东西。

我尝试了以下方法,但它对我不起作用,并且不确定这是否让我更接近我正在寻找的东西。

let newCam = MGLMapCamera()
newCam.heading = 90
mapView.setCamera(newCam, animated: true)
Run Code Online (Sandbox Code Playgroud)

我对 Xcode 和 Swift 还很陌生,理解起来有困难,所以请放轻松!

xcode mapkit ios mapbox swift

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

Mapbox-gl.js 地图在加载事件的 angular-cli 项目中未定义

启动了 angular-cli 项目并通过 npm 安装了 mapbox-gl。在 angular-cli.json 文件中包含了 mapbox-gl 脚本和样式。我可以显示地图,但无法在加载事件上添加图层。地图突然不定义了?这是模板 html (app.component.html):

<div id="map" style="margin:0; padding:0; position:absolute; top:25px; bottom:0; width:100%;">
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的组件代码(app.component.ts):

import { Component, ViewChild, AfterViewInit, OnInit } from '@angular/core';
import * as mapboxgl from 'mapbox-gl';
import { Map } from 'mapbox-gl';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
  @ViewChild("map") map: Map;
  title = 'app';

  ngOnInit() {

    mapboxgl.accessToken = 'blah';   

    this.map = new Map({
      container: 'map',
      style: 'mapbox://styles/mapbox/light-v9',
      zoom: 5,
      center: [-78.880453, …
Run Code Online (Sandbox Code Playgroud)

mapbox typescript mapbox-gl mapbox-gl-js angular

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

Mapbox GL:获取图层 ID

我有一张包含几十层的地图,每层都有一个唯一的 ID。我有用于打开和关闭图层的复选框,为此我需要所有图层 ID 的单个数组。我不知道如何循环遍历所有地图图层来捕获图层 ID。我尝试使用map.getLayer(),但这将图层作为对象返回,而不是将图层 ID 作为字符串返回。我想循环遍历所有地图图层并将图层 ID 字符串推送到新数组。我该怎么做呢?

mapboxgl.accessToken = "myaccesstoken";

var map = new mapboxgl.Map({
container: "map", 
style: "mapbox://styles/mymapboxstyle",  
center: [-71.0664, 42.358],  
minZoom: 14 //  
}); 

map.on("style.load", function () {

map.addSource("contours", {
    type: "vector",
    url: "mapbox://mapbox.mapbox-terrain-v2"
    });

map.addSource("hDistricts-2017", {
    "type": "vector",
    "url": "mapbox://mysource"
    });

map.addLayer({
    "id": "contours",
    "type": "line",
    "source": "contours",
    "source-layer": "contour",
    "layout": {
        "visibility": "none",
        "line-join": "round",
        "line-cap": "round"
        },
    "paint": {
        "line-color": "#877b59",
        "line-width": 1
        }
     });  

map.addLayer({
    "id": "Back Bay Architectural District", …
Run Code Online (Sandbox Code Playgroud)

mapbox mapbox-gl mapbox-gl-js

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

将 MapBox 地理位置坐标放入变量中

我创建了一个带有几个标记的地图,并且能够对用户进行地理定位,该部分已经完成,但我似乎无法找到如何实际获得对用户进行地理定位的结果,我得到的只是切换它的按钮,但无论发生什么似乎都在 Mapbox 本身内部。关于如何将用户位置的结果保存到变量中的任何想法,以便我可以将其用作路线起点(使用 Mapbox Directions API)。此致

gps routes geolocation mapbox

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

Android Mapbox 标记标签

我试图弄清楚如何使动态生成的标记列表在地图上(而不是在信息窗口中)显示动态文本标签。我知道这是可能的,因为我已经在 Mapbox Studio 中使用过这个功能 - 我只是不知道如何在 Android 上做到这一点!我考虑过创建一个包含文本的静态位图图标,但这与 Mapbox Studio 版本相比似乎不太灵活,所以如果可以的话我想避免它!有什么建议么?

android label mapbox mapbox-marker

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

如何在 JavaScript 中使用 Mapbox Geocoding API 对点进行反向地理编码?

我已经阅读了很多 SO 问题和答案,并查看了 Mapbox 文档,但我看不到如何从纬度/经度点反向地理编码的简单示例。该示例仅显示用于进行查询的 URL,但大概有一种方法可以使用MapboxGeocoder对象来完成它?

那么,在这里,当用户单击地图时,我将使用什么来显示经纬度的反向地理编码?

var map = new mapboxgl.Map({
  container: document.getElementsByClassName("js-map")[0],
  center: [0, 51],
  style: "mapbox://styles/mapbox/streets-v11",
  zoom: 11
});

map.on("click", function(ev) {
  // 1. Reverse geocode `ev.lngLat.lat` and `ev.lngLat.lng`
  // 2. Do something with the result.
});
Run Code Online (Sandbox Code Playgroud)

javascript mapbox mapbox-gl-js

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

分类数据的 Mapbox 数据驱动样式 - 如何将表达式与数组输入匹配?

我有一个应用程序,其中将多边形动态添加到 Mapbox 图层。我正在使用匹配表达式来设置多边形填充的样式,但是我在使用数组输入确定表达式的语法时遇到了问题。

这是我正在尝试做的一个快速示例:https : //stackblitz.com/edit/angular-bpuswd?file=src%2Fapp%2Fapp.component.ts

我有一个具有特征属性的图层states根据数据驱动样式的官方地图框示例,我想将每个状态与不同的填充颜色相关联:

// want to match New York to color #F0F and Pennsylvania to color #FF0
const states = ['New York', 'Pennsylvania'];
const colors = ['#F0F', '#FF0'];
const statesAndColors = ['New York', '#F0F', 'Pennsylvania', '#FF0'];

this.map.addLayer({
  id: 'states',
  type: 'fill',
   source: {
      type: 'geojson',
      data: POLYGONS,
   },
   paint: {
     // doesn't work
     'fill-color': ['match', ['string', ['get', 'state']], states, colors, '#AAAAAA']

     // also doesn't work
     // 'fill-color': ['match', ['string', ['get', 'state']], …
Run Code Online (Sandbox Code Playgroud)

javascript mapbox typescript mapbox-gl mapbox-gl-js

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

MapBox Android 的缩放控件

我正在尝试为 Mapbox Android 启用缩放控件,但都没有启用 XML

mapbox:mapbox_uiZoomControls="true" 
Run Code Online (Sandbox Code Playgroud)

也不是 Kotlin/Java

mapboxMap.getUiSettings().setZoomControlsEnabled(true)
Run Code Online (Sandbox Code Playgroud)

适用于 SDK 8.6.1 - 两者似乎都已弃用。任何想法如何启用此控件以及它是否可用?

android mapbox mapbox-android

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

React Mapbox 图层未显示

我正在尝试使用 React Mapbox,但在使用 Layer 组件时遇到了一些问题。

我正在尝试遵循此演示:https : //github.com/alex3165/react-mapbox-gl/blob/master/example/src/demos/heatmap.tsx

甚至主页上的“快速启动”演示:https : //github.com/alex3165/react-mapbox-gl

我的地图正在显示,但图层没有显示!这是我的代码:

import React, { useState } from "react";
import ReactMapboxGl, { Layer, Feature, ZoomControl, Marker } from "react-mapbox-gl";
import "mapbox-gl/dist/mapbox-gl.css";
const data = require("./heatmapData.json");

function LiveMap(props) {

  const Map = ReactMapboxGl({
    accessToken: "pk.ey",
  });

  const heatmapPaint = {
    "heatmap-weight": {
      property: "priceIndicator",
      type: "exponential",
      stops: [
        [0, 0],
        [5, 2],
      ],
    },
    // Increase the heatmap color weight weight by zoom level
    // heatmap-ntensity is a multiplier …
Run Code Online (Sandbox Code Playgroud)

mapbox reactjs mapbox-gl-js react-map-gl

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