{"id":23,"date":"2023-01-24T21:29:59","date_gmt":"2023-01-24T21:29:59","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/schaefkr\/?p=23"},"modified":"2023-01-24T21:30:33","modified_gmt":"2023-01-24T21:30:33","slug":"2-alternatives-to-google-maps-for-integrating-maps-into-your-application","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/schaefkr\/2023\/01\/24\/2-alternatives-to-google-maps-for-integrating-maps-into-your-application\/","title":{"rendered":"2 Alternatives to Google Maps for Integrating Maps into Your Mobile Application"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>Currently my team is working on developing a mobile app for bike sharing for our OSU CS Capstone project. None of the team members have experience using a Map API so we spent a bit of time researching what options are out there. Although Google Maps has great maps APIs, we wanted to explore some alternative options. Here are 2 great Javascript libraries we found &#8211; each offering a range of features at an affordable price. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-819x1024.jpeg\" alt=\"\" class=\"wp-image-24\" width=\"650\" height=\"812\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-819x1024.jpeg 819w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-240x300.jpeg 240w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-768x960.jpeg 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-1229x1536.jpeg 1229w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-1638x2048.jpeg 1638w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/tamas-tuzes-katai-rEn-AdBr3Ig-unsplash-scaled.jpeg 2048w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption class=\"wp-element-caption\">Image by <br>Tamas Tuzes-Katai &#8211; <a href=\"https:\/\/unsplash.com\/photos\/rEn-AdBr3Ig\">Unsplash<\/a><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mapbox GL JS<\/h2>\n\n\n\n<p><a href=\"https:\/\/docs.mapbox.com\/mapbox-gl-js\/api\/map\/\">https:\/\/docs.mapbox.com\/mapbox-gl-js\/api\/map\/<\/a><\/p>\n\n\n\n<p>Mapbox is a powerhouse for their Maps and Navigation APIs. Their Mapbox GL JS library is a standout. According to <a href=\"https:\/\/www.mapbox.com\/mapbox-gljs\">Mapbox<\/a>, <em>&#8220;Mapbox GL JS is a JavaScript library for vector maps on the Web. Its performance, real-time styling, and interactivity features set the bar for anyone building fast, immersive maps on the web.&#8221;<\/em><\/p>\n\n\n\n<p>To get started you just need to create a Map object by specifying the map bounds and a few other options. You can then utilize a multitude of interactive features such as allowing the user to drag and pan or rotate the map. Oh, and did I mention it&#8217;s possible to use 3d maps! Here&#8217;s a <a href=\"https:\/\/docs.mapbox.com\/mapbox-gl-js\/api\/map\/\">full list of features<\/a> to check out. Below are some examples of different maps that are possible with Mapbox GL JS. <\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"313\" data-id=\"29\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc14048234e05fa37071d01_Layer-16-1-p-500.jpeg\" alt=\"\" class=\"wp-image-29\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc14048234e05fa37071d01_Layer-16-1-p-500.jpeg 500w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc14048234e05fa37071d01_Layer-16-1-p-500-300x188.jpeg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"313\" data-id=\"28\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc1406860969856c504a2a8_Layer-15-1-p-500.jpeg\" alt=\"\" class=\"wp-image-28\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc1406860969856c504a2a8_Layer-15-1-p-500.jpeg 500w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fc1406860969856c504a2a8_Layer-15-1-p-500-300x188.jpeg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"313\" data-id=\"27\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce3506c5bbd18caf8b3fdf_Layer-17-1-p-500.jpeg\" alt=\"\" class=\"wp-image-27\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce3506c5bbd18caf8b3fdf_Layer-17-1-p-500.jpeg 500w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce3506c5bbd18caf8b3fdf_Layer-17-1-p-500-300x188.jpeg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"313\" data-id=\"30\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce355514be4d32df1b0931_Layer-15-1-p-500.jpeg\" alt=\"\" class=\"wp-image-30\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce355514be4d32df1b0931_Layer-15-1-p-500.jpeg 500w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/5fce355514be4d32df1b0931_Layer-15-1-p-500-300x188.jpeg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">Images Courtesy of <a href=\"https:\/\/www.mapbox.com\/mapbox-gljs\">Mapbox<\/a><\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>The <a href=\"https:\/\/www.mapbox.com\/pricing\">pricing<\/a> of Mapbox GL JS is affordable, if not free for small applications with less than 50,000 monthly loads. For applications with higher demand, 1,000,000 loads or less will run $3.00. Alternatively, 3 seats for web come at no cost. For larger development teams, 20 seats runs $68\/month and 100 seats is $388\/month.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"223\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-1024x223.png\" alt=\"\" class=\"wp-image-26\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-1024x223.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-300x65.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-768x167.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-1536x335.png 1536w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.45.35-PM-2048x446.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM-1024x496.png\" alt=\"\" class=\"wp-image-25\" width=\"650\" height=\"314\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM-1024x496.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM-300x145.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM-768x372.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM-1536x745.png 1536w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-12.38.22-PM.png 1980w\" sizes=\"auto, (max-width: 650px) 100vw, 650px\" \/><figcaption class=\"wp-element-caption\">Images courtesy of <a href=\"https:\/\/www.mapbox.com\/pricing\">https:\/\/www.mapbox.com\/pricing<\/a><\/figcaption><\/figure>\n\n\n\n<p>To<strong> get started with Mapbox GL JS<\/strong> check out these <strong>tutorials<\/strong>: <\/p>\n\n\n\n<p><a href=\"https:\/\/www.programmableweb.com\/news\/how-to-build-store-locator-using-mapbox-gl-js\/how-to\/2018\/10\/27\">How to Build a Store Locator Using Mapbox GL JS<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.programmableweb.com\/sites\/default\/files\/Build-a-store-locator-using-Mapbox-GL-JS-00-sample_0.jpg\" alt=\"\" \/><figcaption class=\"wp-element-caption\">Image Courtesy of <a href=\"https:\/\/www.programmableweb.com\/sites\/default\/files\/Build-a-store-locator-using-Mapbox-GL-JS-00-sample_0.jpg\">TheProgrammableWeb<\/a><\/figcaption><\/figure>\n\n\n\n<p><a href=\"https:\/\/blog.mapbox.com\/mapbox-gl-js-react-764da6cc074a\">Mapbox GL JS + React<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/miro.medium.com\/max\/1400\/0*I-h_y4j6n3Nct1jk.webp\" alt=\"\" \/><figcaption class=\"wp-element-caption\">Image courtesy of Tristen Brown &#8211; <a href=\"https:\/\/blog.mapbox.com\/mapbox-gl-js-react-764da6cc074a\">Mapbox<\/a><\/figcaption><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=Ldw3mFGyjDE\">Getting Started with Mapbox GL JS Part I<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Getting Started with Mapbox GL JS Part I\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Ldw3mFGyjDE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Leaflet<\/h2>\n\n\n\n<p><a href=\"https:\/\/leafletjs.com\/\">https:\/\/leafletjs.com\/<\/a><\/p>\n\n\n\n<p>According to <a href=\"https:\/\/leafletjs.com\/\">Leaflet<\/a>, <em>&#8220;Leaflet doesn&#8217;t try to do everything for everyone. Instead it focuses on making&nbsp;the basic things work perfectly.&#8221;<\/em> Leaflet doesn&#8217;t boast the range of styling options that Mapbox GL JS does, however, it&#8217;s a great open-source Javascript library that delivers clean vector map tiles. Leaflet works well across all mobile platforms and it has extensive examples to help you get started. <\/p>\n\n\n\n<p>Some highlights of the its features include: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mobile browser support for Chrome, Firefox, Safari for iOS 7+ and IE10+ for Win8 devices. <\/li>\n\n\n\n<li>Interactive map features such as zooming, panning and scrolling<\/li>\n\n\n\n<li>Pure CSS3 popups and controls<\/li>\n\n\n\n<li>Allows for image overlays<\/li>\n\n\n\n<li>Custom map projections&nbsp;EPSG 3857, 4326 and 3395<\/li>\n<\/ul>\n\n\n\n<p>Safari for iOS 7+<\/p>\n\n\n\n<p>Chrome for mobile<\/p>\n\n\n\n<p>Firefox for mobile<\/p>\n\n\n\n<p>IE10+ for Win8 devices<\/p>\n\n\n\n<p>Here are a few helpful tutorials to get started with Leaflet:<\/p>\n\n\n\n<p><a href=\"https:\/\/leafletjs.com\/examples\/quick-start\/\">Leaflet Quick Start Guide<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"678\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.14.59-PM-1024x678.png\" alt=\"\" class=\"wp-image-31\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.14.59-PM-1024x678.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.14.59-PM-300x199.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.14.59-PM-768x509.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.14.59-PM.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Image courtesy of Leaflet<\/figcaption><\/figure>\n\n\n\n<p><a href=\"https:\/\/leafletjs.com\/examples\/mobile\/\">Leaflet on Mobile<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"679\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.16.20-PM-1024x679.png\" alt=\"\" class=\"wp-image-33\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.16.20-PM-1024x679.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.16.20-PM-300x199.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.16.20-PM-768x509.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/6543\/files\/2023\/01\/Screen-Shot-2023-01-24-at-1.16.20-PM.png 1194w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Image courtesy of <a href=\"https:\/\/leafletjs.com\/examples\/mobile\/\">Leaflet<\/a><\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wrap up<\/h2>\n\n\n\n<p>Mapbox GL JS  and Leaflet are 2 great alternatives for developers looking to try out different Maps libraries for their applications. The affordable pricing as well as the range of different maps styling options and interactive features are worth trying. There is thorough documentation and plenty of examples to get started, so the next time you need a map for an app, make sure to checkout both <a href=\"https:\/\/www.mapbox.com\/\">Mapbox<\/a> and <a href=\"https:\/\/leafletjs.com\/\">Leaflet<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Currently my team is working on developing a mobile app for bike sharing for our OSU CS Capstone project. None of the team members have experience using a Map API so we spent a bit of time researching what options are out there. Although Google Maps has great maps APIs, we wanted to explore some [&hellip;]<\/p>\n","protected":false},"author":13228,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-23","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/posts\/23","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/users\/13228"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/comments?post=23"}],"version-history":[{"count":2,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/posts\/23\/revisions"}],"predecessor-version":[{"id":35,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/posts\/23\/revisions\/35"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/media?parent=23"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/categories?post=23"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/schaefkr\/wp-json\/wp\/v2\/tags?post=23"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}