我在https://www.mapbox.com/editor创建了一个项目(地图?),它给了我一个"地图ID"。经过一堆谷歌搜索和搜索后,我终于解决了(我认为?)你应该将这个地图ID嵌入到URL中并将其传递给-[MGLMapView initWithFrame:styleURL:]
初始化方法。我尝试过以下方法:
NSURL *styleURL = [NSURL URLWithString:@"mapbox://my_username.abcdef123455"];
self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds styleURL:styleURL];
但是我在调试控制台中得到以下内容:
[错误] {地图} [设置]:加载方式失败:HTTP状态代码401
我说错了吗?我是否需要在Mapbox管理界面中启用权限或其他内容?
我刚刚发现https://www.mapbox.com/ios-sdk/api/Classes/MGLMapView.html的在线文档说网址应采用mapbox://styles/<user>/<style>
格式。当我尝试这个时,我在线程&#34; Map&#34;:
malloc: * mach_vm_map(size = 685248512)失败(错误代码= 3)
* 错误:无法分配区域
***在malloc_error_break中设置断点以进行调试 libc ++ abi.dylib:以std :: bad_alloc类型的未捕获异常终止:std :: bad_alloc
这是堆栈跟踪的相关部分:
#8 0x32ea286a in operator new(unsigned long) ()
#9 0x32ea6546 in std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long) ()
#10 0x32ea658e in std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) ()
#11 0x00265390 in mbgl::util::mapbox::normalizeStyleURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) ()
#12 0x0022242e in mbgl::DefaultFileSource::request(mbgl::Resource const&, uv_loop_s*, std::__1::function<void (mbgl::Response const&)>) ()
#13 0x001ecf34 in mbgl::MapContext::setStyleURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) ()
#14 0x001ea85a in mbgl::util::RunLoop::Invoker<auto mbgl::util::Thread<mbgl::MapContext>::bind<void (mbgl::MapContext::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)>(void (mbgl::MapContext::*)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&))::'lambda'(void (mbgl::MapContext::*&&)(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)), std::__1::tuple<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::operator()() ()
#15 0x00268662 in mbgl::util::RunLoop::process() ()
#16 0x002ad15a in uv__async_event at /Users/kkaefer/Code/mason/libuv-0.10.28/mason_packages/.build/libuv-0.10.28/src/unix/async.c:80
答案 0 :(得分:0)
这里的根本问题是使用the editor创建的栅格地图与GL styles不兼容。 new Mapbox Studio(目前处于私有测试阶段)是我们创建GL兼容地图的工具。
使用Mapbox iOS SDK加载GL样式的方式如下:
NSURL *styleURL = [NSURL URLWithString:@"mapbox://styles/mapbox/streets-v8"];
self.mapView = [[MGLMapView alloc] initWithFrame:self.view.bounds styleURL:styleURL];
其中mapbox://styles/mapbox/streets-v8
是遵循mapbox://styles/user/styleHash
模式的默认样式。
(在任何情况下,格式不正确的样式网址都不应该崩溃并且we'll make that more robust。)
答案 1 :(得分:0)
我有同样的问题,但我创建了新的访问令牌并使用info.plist。现在工作正常
答案 2 :(得分:0)
订单不知何故很重要。确保将此参数放在info.plist“MGLMapboxAccessToken”中,并使用新生成的令牌并重建项目。它应该工作