ΠΡΠΈΠ²Π΅Ρ,
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ React Native.
ΠΡΠΎ ΠΌΠΎΠΉ ΡΠ°ΠΉΠ» 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 = '© <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>
ΠΈ Ρ Π·Π°Π³ΡΡΠΆΠ°Ρ 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, Π½ΠΎ Π² ΡΠΌΡΠ»ΡΡΠΎΡΠ΅ Android Π²ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
ΠΠΎΡ ΡΡΠΎ Ρ Π²ΠΈΠΆΡ Π² ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ΅ ios:
ΠΡΠΈΠ²Π΅Ρ, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ React, WebView ΠΈ ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠΎΠΌ iOS. ΠΠΎΠΌΠ°Π½Π΄Π° Leaflet Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΡΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΡ , ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±ΠΎΡΡΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ Ρ ΡΡΠΈΠΌ.
ΠΠ° ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π² ΡΠ°ΠΌΠΎΠΌ Leaflet, Π° Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
ΠΡ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Leaflet, ΡΡΠΎΠ±Ρ ΡΠ»ΡΡΡΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π°Ρ Π½Π΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ .
ΠΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Leaflet, JavaScript ΠΈ HTML / CSS, ΠΌΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΡΠ΅Π½Ρ ΠΎΡΠΊΡΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ.
Π― Π±ΡΠ» ΠΈΠ·-Π·Π° HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» ATS (App Transport Security), ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΈ ΠΏΠ»ΠΈΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ. ΠΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ATS - Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΡ @ F1LT3R Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Streaming Leaflet Tiles over HTTPS / SSL # 3186, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ https Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ»ΠΈΡΠΎΠΊ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ osm Π½Π° openstreetmap Π² URL-Π°Π΄ΡΠ΅ΡΠ΅ ΠΏΠ»ΠΈΡΠΊΠΈ ( http://{s}.tile.osm.org/{z}/{x}/{y}.png
-> https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
).
@arminghm , ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅, Ρ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ :)
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ.
Π― Π±ΡΠ» ΠΈΠ·-Π·Π° HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΈ ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ» ATS (App Transport Security), ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΈ ΠΏΠ»ΠΈΡΠΊΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ. ΠΠΎ, ΠΊΠ°ΠΊ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ATS - Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΡ @ F1LT3R Π² ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Streaming Leaflet Tiles over HTTPS / SSL # 3186, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ https Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠ»ΠΈΡΠΎΠΊ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ osm Π½Π° openstreetmap Π² URL-Π°Π΄ΡΠ΅ΡΠ΅ ΠΏΠ»ΠΈΡΠΊΠΈ (
http://{s}.tile.osm.org/{z}/{x}/{y}.png
->https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
).