Leaflet: ios webview์—์„œ ์ง€๋„ ํƒ€์ผ์ด ๋กœ๋“œ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2016๋…„ 11์›” 23์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Leaflet/Leaflet

์•ˆ๋…•ํ•˜์„ธ์š”,

๋ฐ˜์‘ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋‚ด map.html ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.

<html>
  <head>
    <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" />
    <script src="https://unpkg.com/[email protected]/dist/leaflet.js"></script>
  </head>
  <body>
    <div id="map" style="height: 100%;">
    </div>
    <script>
        var osmUrl = 'https://{s}.tile.osm.org/{z}/{x}/{y}.png',
        osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
        osm = L.tileLayer(osmUrl, {
              maxZoom: 18,
              attribution: osmAttrib
            });
        var map = L.map('map').setView([19.04469, 72.9258], 12);
        map.addLayer(osm);
    </script>
  </body>
</html>

webview์— map.html์„ ๋กœ๋“œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

import React, { Component } from 'react';
import {
  WebView
} from 'react-native';

export default class MapScreen extends Component {
  render() {
    return (
      <WebView style={{flex:1}} javaScriptEnabled={true} source={require('./map.html')}/>
    );
  }
}

๊ทธ๋Ÿฌ๋‚˜ ํƒ€์ผ์€ ios ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋กœ๋“œ๋˜์ง€ ์•Š์ง€๋งŒ ์•ˆ๋“œ๋กœ์ด๋“œ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ios ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
simulator screen shot nov 23 2016 11 31 41 pm

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ต์žฅ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” http ์š”์ฒญ ๋•Œ๋ฌธ์— ์žˆ์—ˆ๊ณ  ATS ( App Transport Security )๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํƒ€์ผ์ด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์‹œ๋‹ค์‹œํ”ผ ATS๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค.

Streaming Leaflet Tiles over HTTPS / SSL #3186 ๋ฌธ์ œ์˜ @F1LT3R ๋‹ต๋ณ€์— ๋”ฐ๋ฅด๋ฉด ํƒ€์ผ ์„ ๋กœ๋“œํ•˜๊ณ  ํƒ€์ผ URL์—์„œ osm์„ openstreetmap์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ https๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( http://{s}.tile.osm.org/{z}/{x}/{y}.png -> https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png ).

๋ชจ๋“  3 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฌธ์ œ๋Š” React, WebView ๋ฐ iOS ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Leaflet ํŒ€์€ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด ๋„๊ตฌ์— ๋Œ€ํ•ด ๋„์›€์„ ๋“œ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งค์šฐ ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ๋ณด๋ฉด ๋ฌธ์ œ๊ฐ€ Leaflet ์ž์ฒด์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋งค์šฐ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋„๊ตฌ์™€ ๋” ์ž˜ ์ž‘๋™ํ•˜๋„๋ก Leaflet์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ ๋‹ค๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋„๊ตฌ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Leaflet, JavaScript ๋ฐ HTML/CSS๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํŒจํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๋ฌผ๋ก  ์ด์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐœ๋ฐฉ์ ์ž…๋‹ˆ๋‹ค.

๋‹ต์žฅ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” http ์š”์ฒญ ๋•Œ๋ฌธ์— ์žˆ์—ˆ๊ณ  ATS ( App Transport Security )๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ํƒ€์ผ์ด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์•„์‹œ๋‹ค์‹œํ”ผ ATS๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค.

Streaming Leaflet Tiles over HTTPS / SSL #3186 ๋ฌธ์ œ์˜ @F1LT3R ๋‹ต๋ณ€์— ๋”ฐ๋ฅด๋ฉด ํƒ€์ผ ์„ ๋กœ๋“œํ•˜๊ณ  ํƒ€์ผ URL์—์„œ osm์„ openstreetmap์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ https๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค( http://{s}.tile.osm.org/{z}/{x}/{y}.png -> https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png ).

@arminghm , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค :)

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰