如何在Android上显示MapBox图块?我尝试将它与OSMDroid一起使用,而Nutiteq则没有成功.MapBox有一个android库吗?
例如,我使用此代码在OSMDroid上实现MapBox:http://blog.spatialnetworks.com/post/2012/07/using-mbtiles-on-android-with-osmdroid
XYTileSource MBTILESRENDER = new XYTileSource("mbtiles", ResourceProxy.string.offline_mode, 1, 20, 256, ".png", "http://example.org/");
DefaultResourceProxyImpl mResourceProxy = new DefaultResourceProxyImpl(this.getApplicationContext());
SimpleRegisterReceiver simpleReceiver = new SimpleRegisterReceiver(this.getActivity());
File f = new File(Environment.getExternalStorageDirectory(), "mymbtilesfile.mbtiles");
IArchiveFile[] files = { MBTilesFileArchive.getDatabaseFileArchive(f) };
MapTileModuleProviderBase moduleProvider = new MapTileFileArchiveProvider(simpleReceiver, MBTILESRENDER, files);
MapTileProviderArray mProvider = new MapTileProviderArray(MBTILESRENDER, null, new MapTileModuleProviderBase[] { moduleProvider });
this.mMapView = new MapView(this, 256, mResourceProxy, mProvider);
Run Code Online (Sandbox Code Playgroud)
但它没有用,我想直接从网上加载MbTiles.
我正在使用Mapbox loadURL函数加载markerLayer.这工作正常,我能够访问标记属性,但似乎不起作用的是改变标记的颜色.
var markerLayer = L.mapbox.markerLayer();
markerLayer.loadURL('geojson.php?lat='+lat+'&lng='+lng)
.addTo(map);
markerLayer.on('click',function(e) {
e.layer.unbindPopup();
var feature = e.layer.feature;
var info = '<h2>' + feature.properties.name + '</h2>' +
'<p>' + feature.properties.description + '</p>';
document.getElementById('info').innerHTML = info;
feature.properties['old-color'] = feature.properties['marker-color'];
feature.properties['marker-color'] = '#000';
});
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用,我将如何使用从URL加载的geoJson数据更改标记的颜色?该贴例子依赖于没有使用使用loadURL加载GeoJSON的数据.我怀疑这与标记颜色不变的原因有关.
我正在制作一个必须脱机工作的Web应用程序.到目前为止一切正常,我的最后一步是将地图图块脱机.幸运的是,我确切地知道用户需要访问地图的哪些区域,因此我不必允许缓存数百万个磁贴.
地图分为几个区域,因此我们的想法是将这些区域的图块作为可下载的"包"提供.
例如,当我在线时,我会转到"瓷砖包"页面,该页面提供了几个区域的下载.我选择了我感兴趣的区域,下载了瓷砖,当我离线时,我可以使用这些瓷砖.我只需要大约2个缩放级别,一个用于快速导航,另一个用于更多细节.
我正在使用传单来提供地图.有没有人不得不这样做,可以给我一些指导?我真的只是不知道如何接近这个,这是拼图的最后一块.
我正在寻找一种在QGis中显示我的Mapbox地图的方法(在mapbox.com上编辑的baselayer和从tilemill上传的数据).
这里有人找到了办法吗?是否有功能或插件可以做到这一点?
感谢您将来的答案!
阿德里安
在iOS中,您可以通过调用以下内容轻松设置标记的标注:
[marker setCanShowCallout:YES];
[marker setRightCalloutAccessoryView:YOUR_BUTTON];
Run Code Online (Sandbox Code Playgroud)
但是我找不到Mapbox Android SDK的这个功能.我现在有一个侦听器,它可以检测到calloutview上的触摸但是如何设置一个标注图像/按钮?
Marker marker = new Marker(p.getTitle(), p.getCatagoryName(), new LatLng(p.getLatitude(), p.getLongitude()));
marker.setMarker(getResources().getDrawable(getResources().getIdentifier(string, "drawable", getActivity().getPackageName())));
mMapView.addMarker(marker);
InfoWindow toolTip = marker.getToolTip(mMapView);
View view = toolTip.getView();
// view.setBackgroundResource(R.drawable.callout_button); THIS DOES NOT WORK
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
Log.e(TAG, "onTouch");
return true;
}
});
Run Code Online (Sandbox Code Playgroud) 我在我们的应用程序中使用mapbox.执行this.map.fitBounds(绑定值)将zoomout或zoomin映射到绑定指定值.我需要在调用this.map.fitBounds之前找出缩放级别(即在拟合边界之后的地图渲染).mapbox中有可用的方法吗?
无法禁用Mapbox GL JS上的默认缩放滚动功能.API文档中没有任何内容可以阐明这一点.甚至错过了他们文档中的滚动事件.
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v8',
zoom: 15
});
Run Code Online (Sandbox Code Playgroud) 我有多个geojson类型:存储在Mysql中的FeatureCollection.我想将两个或更多geojson合并到一个FeatureCollection geojson并在我的地图中显示.我已经准备好了传单地图,可以很容易地在地图中显示.
我读到了Mapbox'geojson-merge',但我无法理解如何在我的js或PHP文件中使用api.
https://github.com/mapbox/geojson-merge
我在网上搜索它,但无法找到有关如何使用我的在线代码的任何指南.
这就是我正在做的事情: 点击地图上的标记打开侧面板并将地图置于标记的中心.侧面板占据屏幕右侧的3/4.
这就是我需要发生的事情: 根据面板打开后留下的视口的1/4使标记居中.
我可以获得标记的像素坐标,并在面板动画打开时计算它需要转换到的位置.问题是flyTo()只接受LngLatLike对象而我无法将我的像素坐标转换为纬度和经度.containerPointToLatLng()在切换到Mapbox GL之前,Leaflet.js有一个叫做派生的函数.
鉴于Mapbox GL的软化,尽管它有新意,我只能想象这是一种可能性.但是怎么样?
我已经尝试了几个小时。Mapbox网站上的材料仅显示以下内容:
func mapView(_ mapView: MGLMapView, calloutViewFor annotation: MGLAnnotation) -> MGLCalloutView? {
// Instantiate and return our custom callout view.
return CustomCalloutView(representedObject: annotation)
}
Run Code Online (Sandbox Code Playgroud)
问题在于,没有关于实现CustomCallout的“ CustomCalloutView”的详细说明。我理解(我认为)它的类实现了MGLCalloutView,但是创建一个正确实现该方法的类并不是一件容易的事,我遇到了各种各样的错误,尤其是围绕一个函数“ self”-> Self。
看到一个如何实际实现自定义标注的示例将非常高兴。对于像我这样的简单人来说,Mapbox Git上的所有对话都太复杂了。