Mapbox studioでスタイル設定されたマップを持っていますが、基本的なマーカーを追加するのに苦労していますが、マーカーがあるべき場所にマーカーが表示されていることを示すテキストが表示されています。
そのマップスタイルのコードは次のとおりです。
mapboxgl.accessToken = 'pk.eyJ1Ijoic21pY2tpZSIsImEiOiJjaWtiM2JkdW0wMDJudnRseTY0NWdrbjFnIn0.WxGYL18BJjWUiNIu-r3MSA';
var map = new mapboxgl.Map({
container: 'map',
style: "mapbox://styles/smickie/cikb3fhvi0063cekqns0pk1f1",
center: [-30.50, 40],
zoom: 2,
interactive: false
});
そしてここにいくつかのマーカーがAPIの例から追加されています:
map.on('style.load', function () {
map.addSource("markers", {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-77.03238901390978, 38.913188059745586]
},
"properties": {
"title": "Mapbox DC",
"marker-symbol": "monument"
}
}, {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-122.414, 37.776]
},
"properties": {
"title": "Mapbox SF",
"marker-color": "#ff00ff"
}
}]
}
});
map.addLayer({
"id": "markers",
"type": "symbol",
"source": "markers",
"layout": {
"icon-image": "{marker-symbol}-15",
"text-field": "{title}",
"text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
"text-offset": [0, 0.6],
"text-anchor": "top"
}
});
});
ただし、アイコンではなくテキストのみが表示されます。
質問は、特別なアイコンのマーカーではなく、通常の基本的な色のマーカーだけをこのマップに追加するにはどうすればよいですか?
ありがとう。
ここでの問題は、選択したテンプレートであるMapbox Studioのスタイルの開始点に、レイヤーレイアウトで参照しているグリフ/スプライトがないことです。使用した例で使用しているのと同じスタイルに切り替えると、mapbox://styles/mapbox/streets-v8
マーカーが表示されます。それは、それらがそのスタイルに追加されたためです。あなたがあなたのスタイルに戻ると、彼らは再び消えてしまいます。
これがあなたのスタイルのスプライトのconsole.logです:
そして、これがMapboxストリートスプライトのconsole.logです。
ご覧のとおり、mapboxには数十個ありますが(スクリーンショットよりも多い)、2個しかありません。プロパティ名を使用するだけで、お持ちのものを使用できます:default_marker
およびsecondary_marker
:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-77.03238901390978, 38.913188059745586]
},
"properties": {
"title": "Mapbox DC",
"marker-symbol": "default_marker"
}
}
map.addLayer({
"id": "markers",
"source": "markers",
"type": "symbol",
"layout": {
"icon-image": "{marker-symbol}",
"text-field": "{title}",
"text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
"text-offset": [0, 0.6],
"text-anchor": "top"
}
});
プランカーの例: http://plnkr.co/edit/W7pfGHVBzJj8U3AmPyzf?p=preview
さらに必要な場合は、使用するスプライト/グリフをMapboxスタジオのスタイルに追加する必要があります。残念ながら、これは「プログラミング」とはほとんど関係がありません。これは、ソフトウェアツールであるMapbox Studioに関連しているため、ここではスタックオーバーフローの一種の「オフトピック」です。
スプライト/グリフさえ必要ない場合は、type: circle
プロパティとPaint
プロパティを使用して単純な円を作成することもできます。
map.addLayer({
"id": "markers",
"source": "markers",
"type": "circle",
"Paint": {
"circle-radius": 10,
"circle-color": "#007cbf"
}
});
プランカーの例: http://plnkr.co/edit/QDtIBtDIimKy6TUmKxcC?p=preview
スタイルとスプライトの詳細については、こちらをご覧ください。