Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Většina webových aplikací, které používají Mapy Google, používá sadu JavaScript SDK Google Maps V3. Webová sada SDK služby Azure Maps je vhodná sada SDK založená na Azure pro migraci. Webová sada SDK služby Azure Maps umožňuje přizpůsobit interaktivní mapy pomocí vlastního obsahu a obrázků. Aplikaci můžete spustit na webových i mobilních aplikacích. Tento ovládací prvek využívá WebGL a umožňuje vykreslovat rozsáhlé datové sady s vysokým výkonem. Vyvíjejte pomocí této sady SDK pomocí JavaScriptu nebo TypeScriptu. Tento kurz ukazuje:
- Načti mapu
- Lokalizace mapy
- Přidejte značky, čáry a mnohoúhelníky.
- Zobrazení informací ve vyskakovacím okně nebo okně s informacemi
- Načtení a zobrazení dat KML a GeoJSON
- Značky clusteru
- Překrýt dlaždicovou vrstvu
- Zobrazení provozních dat
- Přidejte překrytí země
Navíc:
- Jak provádět běžné úlohy mapování pomocí webové sady SDK služby Azure Maps
- Osvědčené postupy pro zlepšení výkonu a uživatelského prostředí
- Tipy k používání pokročilejších funkcí dostupných ve službě Azure Maps
Pokud migrujete existující webovou aplikaci, zkontrolujte, jestli používá knihovnu ovládacích prvků mapování open source. Příklady knihovny pro správu open-source map jsou: Cesium, Leaflet a OpenLayers. Aplikaci můžete migrovat i v případě, že používá knihovnu správy map open source a nechcete používat webovou sadu SDK služby Azure Maps. V takovém případě připojte aplikaci ke službám Azure Maps Render (cestovní dlaždice | satelitní dlaždice). Následující body podrobně uvádějí, jak používat Azure Maps v některých běžně používaných knihovnách pro správu opensourcových map.
- Cesium – ovládací prvek 3D mapy pro web. Dokumentace k Cesiu.
- Leaflet – lehké 2D ovládání mapy pro webové aplikace. Vzorkový kód Leaflet | Dokumentace Leaflet.
- OpenLayers – 2D ovládací prvek mapy pro web, který podporuje projekce. Dokumentace OpenLayers
Pokud vyvíjíte pomocí javascriptové architektury, může být užitečný jeden z následujících opensourcových projektů:
- ng-azure-maps – obálka Angular 10 kolem Azure Maps.
- AzureMapsControl.Components – komponenta Azure Maps Blazor.
- Komponenta React Azure Maps – obálka knihovny React pro ovládací prvek Azure Maps.
- Vue Azure Maps – komponenta Azure Maps pro aplikaci Vue
Požadavky
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
- Účet služby Azure Maps
- Klíč předplatného
Poznámka:
Další informace o ověřování ve službě Azure Maps najdete v tématu Správa ověřování v Azure Maps.
Podpora klíčových funkcí
Tabulka uvádí klíčové funkce rozhraní API v sadě JavaScript SDK Google Maps V3 a podporovanou funkci rozhraní API ve webové sadě SDK služby Azure Maps.
Funkce Google Maps | Podpora webové sady SDK služby Azure Maps |
---|---|
Značky | ✓ |
Shlukování markerů | ✓ |
Lomené čáry a mnohoúhelníky | ✓ |
Datové vrstvy | ✓ |
Pozemní překryvy | ✓ |
Teplotní mapy | ✓ |
Vrstvy dlaždic | ✓ |
Vrstva KML | ✓ |
Nástroje pro kreslení | ✓ |
Služba Geocoder | ✓ |
Směrová služba | ✓ |
Služba Matice vzdálenosti | ✓ |
Významné rozdíly ve webových sadách SDK
Tady jsou některé klíčové rozdíly mezi službami Google Maps a webovými sadami SDK Služby Azure Maps, o nichž je potřeba vědět:
- Kromě poskytování hostovaného koncového bodu pro přístup k webové sadě SDK služby Azure Maps je k dispozici balíček npm. Další informace o tom, jak vložit balíček webové sady SDK do aplikací, najdete v tématu Použití ovládacího prvku mapy Azure Maps. Tento balíček obsahuje také definice TypeScriptu.
- Nejprve musíte vytvořit instanci třídy Map v Azure Maps. Před programovou interakcí s mapou počkejte, než se mapy
ready
neboload
událost aktivuje. Tento příkaz zajistí, že se načtou všechny mapové prostředky a budou připravené k použití. - Obě platformy používají pro základní mapy podobný dlaždicový systém. Dlaždice v Mapách Google jsou 256 pixelů v rozměru; Dlaždice v Azure Maps jsou však v rozměru 512 pixelů. Pokud chcete mít stejné zobrazení mapy v Azure Maps jako v Google Maps, odečtěte od úrovně přiblížení Google Maps číslo jedna v Azure Maps.
- Souřadnice v Google Maps se označují jako
latitude,longitude
, zatímco Azure Maps používálongitude,latitude
. Formát Azure Maps je v souladu se standardním[x, y]
formátem, za kterým následuje většina platforem GIS. - Obrazce ve webové sadě SDK služby Azure Maps jsou založené na schématu GeoJSON. Pomocné třídy jsou vystaveny prostřednictvím prostor názvů atlas.data. Je zde také třída atlas.Shape Tato třída slouží k zabalení objektů GeoJSON, aby bylo možné snadno aktualizovat a udržovat data vázáním.
- Souřadnice v Azure Maps jsou definovány jako objekty Pozice. Souřadnice je zadána jako číselná matice ve formátu
[longitude,latitude]
. Určí se to také pomocí nového atlas.data.Position(zeměpisná délka, zeměpisná šířka).Návod
Třída Position má statickou pomocnou metodu pro import souřadnic, které jsou ve formátu "zeměpisná šířka, zeměpisná délka". Metoda atlas.data.Position.fromLatLng může být často nahrazena metodou
new google.maps.LatLng
v kódu Google Maps. - Místo zadávání informací o stylu jednotlivých obrazců přidaných do mapy odděluje Azure Maps styly od dat. Data jsou uložená ve zdroji dat a jsou připojená k vykreslovacím vrstvě. Kód Azure Maps používá zdroje dat k vykreslení dat. Tento přístup poskytuje vyšší výhodu výkonu. Mnoho vrstev navíc podporuje styly řízené daty, kde je možné přidat obchodní logiku do možností stylu vrstvy. Tato podpora mění způsob vykreslování jednotlivých obrazců v rámci vrstvy na základě vlastností definovaných v obrazci.
Příklady webové sady SDK vedle sebe
Tato kolekce obsahuje ukázky kódu pro každou platformu a každá ukázka se zabývá běžným případem použití. Účelem je pomoct migrovat webovou aplikaci ze sady JavaScript SDK Služby Google Maps V3 do sady Azure Maps Web SDK. Ukázky kódu související s webovými aplikacemi jsou k dispozici v JavaScriptu. Azure Maps ale také poskytuje definice TypeScriptu jako jinou možnost prostřednictvím modulu npm.
Témata
- Načti mapu
- Lokalizace mapy
- Nastavení zobrazení mapy
- Přidání značky
- Přidání vlastní značky
- Přidání polylinie
- Přidání mnohoúhelníku
- Zobrazení informačního okna
- Import souboru GeoJSON
- Seskupování značek
- Přidejte tepelnou mapu
- Překryjte vrstvu dlaždic
- Zobrazení dat o provozu
- Přidejte podkladové překrytí
- Přidání dat KML do mapy
Načti mapu
Obě sady SDK mají stejný postup pro načtení mapy:
- Přidejte odkaz na mapovou sadu SDK.
-
div
Přidejte značku do textu stránky, která slouží jako zástupný symbol pro mapu. - Vytvořte funkci JavaScriptu, která se volá při načtení stránky.
- Vytvořte instanci příslušné třídy mapy.
Některé klíčové rozdíly
- Google Maps vyžaduje, aby byl v odkazu na skript rozhraní API zadán klíč účtu. Přihlašovací údaje pro autentizaci pro Azure Maps jsou specifikovány jako možnosti třídy map. Tyto přihlašovací údaje můžou být klíčem předplatného nebo informacemi o Microsoft Entra.
- Google Maps přijímá funkci zpětného volání v odkazu na skript rozhraní API, která se používá k volání inicializační funkce pro načtení mapy. Událost onload stránky by se měla použít v Azure Maps.
- Při odkazování na
div
prvek, ve kterém se mapa vykresluje, třída v Azure Maps vyžaduje pouze hodnotuMap
, ale Google Maps vyžadují objektid
. - Souřadnice v Azure Maps jsou definovány jako objekty Pozice, které lze zadat jako jednoduché číselné pole ve formátu
[longitude, latitude]
. - Úroveň přiblížení v Azure Maps je o jednu úroveň nižší než úroveň přiblížení v Google Maps. Tato nesrovnalost je způsobená rozdílem ve velikostech dlaždicového systému na těchto dvou platformách.
- Azure Maps nepřidává na plátno mapy žádné navigační ovládací prvky. Ve výchozím nastavení tedy mapa neobsahuje tlačítka lupy a tlačítka stylu mapy. Existují ale možnosti ovládacích prvků pro přidání výběru stylu mapy, tlačítka přiblížení, kompasu, ovládání rotace a ovládání náklonu.
- V Azure Maps se přidá obslužná rutina události pro monitorování
ready
události instance mapy. Tato událost se aktivuje, když mapa dokončí načtení kontextu WebGL a všech potřebných prostředků. Do této obslužné rutiny události přidejte libovolný kód, který chcete spustit po dokončení načítání mapy.
Následující příklady používají Mapy Google k načtení mapy vycentrované na New York na zadaných souřadnicích. Zeměpisná délka: -73,985, zeměpisná šířka: 40,747 a mapa je na úrovni přiblížení 12.
Před: Mapy Google
Zobrazte mapu Google, která je vycentrovaná a přiblížená na určité místo.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(40.747, -73.985),
zoom: 12
});
}
</script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}" async defer></script>
</head>
<body>
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Spuštěním tohoto kódu v prohlížeči se zobrazí mapa, která vypadá jako na následujícím obrázku:
Po: Azure Maps
Načtěte mapu se stejným zobrazením ve službě Azure Maps, spolu s ovládáním stylu mapy a tlačítky přiblížení.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map;
function initMap() {
map = new atlas.Map('myMap', {
center: [-73.985, 40.74], //Format coordinates as longitude, latitude.
zoom: 11, //Subtract the zoom level by one.
//Specify authentication information when loading the map.
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Add zoom controls to bottom right of map.
map.controls.add(new atlas.control.ZoomControl(), {
position: 'bottom-right'
});
//Add map style control in top left corner of map.
map.controls.add(new atlas.control.StyleControl(), {
position: 'top-left'
});
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Spuštěním tohoto kódu v prohlížeči se zobrazí mapa, která vypadá jako na následujícím obrázku:
Další informace o tom, jak nastavit a používat ovládací prvek mapy Azure Maps ve webové aplikaci, najdete v tématu Použití ovládacího prvku mapy Azure Maps.
Poznámka:
Na rozdíl od Google Maps nevyžaduje Azure Maps počáteční střed a úroveň přiblížení pro načtení mapy. Pokud se tyto informace při načítání mapy nezadá, Azure Maps se pokusí určit město uživatele. Mapu to zacentruje a přiblíží.
Další zdroje informací:
- Další informace o navigačních ovládacích prvcích pro otáčení a rozsažení zobrazení mapy najdete v tématu Přidání ovládacích prvků do mapy.
Lokalizace mapy
Pokud je vaše cílová skupina rozložená do více zemí nebo oblastí nebo mluví různými jazyky, je lokalizace důležitá.
Před: Mapy Google
Pokud chcete lokalizovat Mapy Google, přidejte parametry jazyka a oblasti.
<script type="text/javascript" src=" https://maps.googleapis.com/maps/api/js?callback=initMap&key={api-Key}&language={language-code}®ion={region-code}" async defer></script>
Tady je příklad Google Maps s jazykem nastaveným na "fr-FR".
Po: Azure Maps
Azure Maps nabízí dva různé způsoby nastavení jazyka a regionálního zobrazení mapy. První možností je přidat tyto informace do globálního oboru názvů atlas. Výsledkem je, že všechny instance ovládacího prvku mapy ve vaší aplikaci se nastaví ve výchozím nastavení. Následující akce nastaví jazyk na francouzštinu ("fr-FR") a regionální zobrazení na "Auto":
atlas.setLanguage('fr-FR');
atlas.setView('auto');
Druhou možností je předat tyto informace do možností mapy při načítání mapy. Nějak tak:
map = new atlas.Map('myMap', {
language: 'fr-FR',
view: 'auto',
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
Poznámka:
V Azure Maps je možné načíst více instancí mapy na stejné stránce s různými nastaveními jazyka a oblasti. Po načtení mapy lze tato nastavení také aktualizovat.
Další informace o podporovaných jazycích najdete v tématu Podpora lokalizace v Azure Maps.
Tady je příklad služby Azure Maps s jazykem nastaveným na fr a oblastí uživatele nastavenou na fr-FR.
Nastavení zobrazení mapy
Dynamické mapy v Azure i Google Maps se dají programově přesunout do nových geografických lokalit. Uděláte to tak, že zavoláte příslušné funkce v JavaScriptu. Příklady ukazují, jak zobrazit satelitní letecké snímky na mapě, umístit mapu na určitou lokalitu a změnit úroveň přiblížení na 15 v Mapách Google. Používají se následující souřadnice umístění: zeměpisná délka: -111.0225 a zeměpisná šířka: 35.0272.
Poznámka:
Google Maps používá dlaždice, které mají rozměry 256 pixelů, zatímco Azure Maps používá větší 512 pixelovou dlaždici. Služba Azure Maps proto vyžaduje méně síťových požadavků, aby se načetla stejná oblast mapy jako Mapy Google. Vzhledem k tomu, jak funguje mřížka dlaždic v ovládacích prvcích map, je potřeba při použití Azure Maps odečíst úroveň přiblížení používanou v Google Maps o jedna. Tato aritmetická operace zajišťuje, že větší dlaždice ve službě Azure Maps vykreslují stejnou oblast mapy jako v Mapách Google.
Před: Mapy Google
Ovládací prvek mapy Google Maps přesuňte pomocí metody setOptions
. Tato metoda umožňuje určit střed mapy a úroveň přiblížení.
map.setOptions({
mapTypeId: google.maps.MapTypeId.SATELLITE,
center: new google.maps.LatLng(35.0272, -111.0225),
zoom: 15
});
Po: Azure Maps
V Azure Maps změňte pozici mapy pomocí setCamera
metody a změňte styl mapy pomocí setStyle
metody. Souřadnice v Azure Maps jsou ve formátu "zeměpisná délka, zeměpisná šířka" a hodnota úrovně přiblížení se odečte o jednu.
map.setCamera({
center: [-111.0225, 35.0272],
zoom: 14
});
map.setStyle({
style: 'satellite'
});
Další zdroje informací:
Přidání značky
Ve službě Azure Maps existují různé způsoby, kterými se data bodů dají vykreslit na mapě:
- Značky HTML – vykreslují body pomocí tradičních prvků DOM. Značky HTML podporují přetahování.
- Symbolová vrstva – Vykresluje body pomocí ikony nebo textu v kontextu WebGL.
- Bublinová vrstva – vykreslí body jako kruhy na mapě. Radii kruhů lze škálovat na základě vlastností v datech.
Vykreslujte vrstvy symbolů a bublinové vrstvy v kontextu WebGL. Obě vrstvy můžou vykreslit velké sady bodů na mapě. Tyto vrstvy vyžadují, aby data byla uložena ve zdroji dat. Po spuštění události by se do mapy ready
měly přidat zdroje dat a vrstvy vykreslování. Značky HTML se vykreslují jako prvky DOM na stránce a nepoužívají zdroj dat. Čím více prvků DOM má stránka, tím pomalejší bude stránka. Pokud na mapě vykreslujete více než několik stovek bodů, doporučujeme místo toho použít jednu z vykreslovacích vrstev.
Přidejme k mapě značku s číslem 10 umístěným jako štítek. Použijte délku: -0,2 a zeměpisnou šířku: 51,5.
Před: Mapy Google
Pomocí Google Maps přidejte značky do mapy pomocí google.maps.Marker
třídy a jako jednu z možností určete mapu.
//Create a marker and add it to the map.
var marker = new google.maps.Marker({
position: new google.maps.LatLng(51.5, -0.2),
label: '10',
map: map
});
After: Azure Maps s využitím značek HTML
Ve službě Azure Maps použijte značky HTML k zobrazení bodu na mapě. Pro aplikace, které potřebují zobrazit jenom několik bodů na mapě, se doporučují značky HTML. Pokud chcete použít značku HTML, vytvořte instanci atlas.HtmlMarker
třídy. Nastavte možnosti textu a umístění a přidejte značku do mapy pomocí map.markers.add
metody.
//Create a HTML marker and add it to the map.
map.markers.add(new atlas.HtmlMarker({
text: '10',
position: [-0.2, 51.5]
}));
Po: Azure Maps používá vrstvu symbolů
Pro vrstvu Symbol přidejte data do zdroje dat. Připojte zdroj dat k vrstvě. Kromě toho by se zdroj dat a vrstva měly přidat do mapy po vyvolání události ready
. Pokud chcete vykreslit jedinečnou textovou hodnotu nad symbolem, musí být textové informace uloženy jako vlastnost datového bodu. Vlastnost musí být odkazována v možnosti textField
vrstvy. Tento přístup je o něco více práce než použití značek HTML, ale lepší výkon.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map, datasource;
function initMap() {
map = new atlas.Map('myMap', {
center: [-0.2, 51.5],
zoom: 9,
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Create a point feature, add a property to store a label for it, and add it to the data source.
datasource.add(new atlas.data.Feature(new atlas.data.Point([-0.2, 51.5]), {
label: '10'
}));
//Add a layer for rendering point data as symbols.
map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
textOptions: {
//Use the label property to populate the text for the symbols.
textField: ['get', 'label'],
color: 'white',
offset: [0, -1]
}
}));
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
- Vytvoření zdroje dat
- Přidání vrstvy symbolu
- Přidání bublinové vrstvy
- Seskupování dat bodů ve Web SDK
- Přidání značek HTML
- Použití výrazů stylu řízených daty
- Možnosti vrstvy ikony symbolu
- Možnost vrstvy textu symbolu
- Třída značky HTML
- Možnosti značek HTML
Přidání vlastní značky
Vlastní obrázky můžete použít k reprezentaci bodů na mapě. Následující mapa používá vlastní obrázek k zobrazení bodu na mapě. Bod se zobrazí v zeměpisné šířce: 51,5 a zeměpisná délka: -0,2. Ukotvení posune pozici značky, aby se bod ikony připínáku zarovná se správnou polohou na mapě.
žlutý-připínáček.png
Před: Mapy Google
Vytvořte vlastní značku zadáním Icon
objektu, který obsahuje url
odkaz na obrázek. Zadejte bod, aby anchor
zarovnal bod obrázku špendlíku se souřadnicí na mapě. Hodnota ukotvení v Google Maps je relativní vzhledem k levému hornímu rohu obrázku.
var marker = new google.maps.Marker({
position: new google.maps.LatLng(51.5, -0.2),
icon: {
url: 'https://samples.azuremaps.com/images/icons/ylw-pushpin.png',
anchor: new google.maps.Point(5, 30)
},
map: map
});
After: Azure Maps s využitím značek HTML
Pokud chcete přizpůsobit značku HTML, předejte kód HTML string
nebo HTMLElement
do možnosti htmlContent
značky.
anchor
Pomocí možnosti můžete určit relativní pozici značky vzhledem ke souřadnici pozice. Přiřaďte k anchor
možnosti jeden z devíti definovaných referenčních bodů. Tyto definované body jsou: "střed", "nahoře", "dole", "vlevo", "vpravo", "vlevo nahoře", "vpravo nahoře", "vlevo dole", "vpravo dole". Ve výchozím nastavení je obsah ukotvený do dolního středu obsahu HTML. Pokud chcete usnadnit migraci kódu z Google Maps, nastavte anchor
na "vlevo nahoře" a pak použijte pixelOffset
možnost se stejným posunem, který se používá v Google Maps. Posuny v Azure Maps se pohybují opačným směrem než posuny v Google Maps. Vynásobte tedy posuny o mínus jednu.
Návod
Přidejte pointer-events:none
jako styl do obsahu html, abyste zakázali výchozí chování přetažení v Microsoft Edge, které zobrazí nežádoucí ikonu.
map.markers.add(new atlas.HtmlMarker({
htmlContent: '<img src="https://samples.azuremaps.com/images/icons/ylw-pushpin.png" style="pointer-events: none;" />',
anchor: 'top-left',
pixelOffset: [-5, -30],
position: [-0.2, 51.5]
}));
Po: Azure Maps používá vrstvu symbolů
Vrstvy symbolů v Azure Maps podporují také vlastní image. Nejprve načtěte obrázek do prostředků mapy a přiřaďte mu nějaké jedinečné ID. Odkazujte na obrázek ve vrstvě symbolů.
offset
Pomocí možnosti můžete obrázek zarovnat ke správnému bodu na mapě.
anchor
Pomocí možnosti můžete určit relativní pozici symbolu vzhledem ke souřadnicům pozice. Použijte jeden z devíti definovaných referenčních bodů. Tyto body jsou: "střed", "horní", "dolní", "vlevo", "vpravo", "vlevo nahoře", "vpravo nahoře", "vlevo dole", "vpravo dole". Ve výchozím nastavení je obsah ukotvený do dolního středu obsahu HTML. Pokud chcete usnadnit migraci kódu z Google Maps, nastavte anchor
na "vlevo nahoře" a pak použijte offset
možnost se stejným posunem, který se používá v Google Maps. Posuny v Azure Maps se pohybují opačným směrem než posuny v Google Maps. Vynásobte tedy posuny o mínus jednu.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map, datasource;
function initMap() {
map = new atlas.Map('myMap', {
center: [-0.2, 51.5],
zoom: 9,
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Load the custom image icon into the map resources.
map.imageSprite.add('my-yellow-pin', 'https://samples.azuremaps.com/images/icons/ylw-pushpin.png').then(function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Create a point and add it to the data source.
datasource.add(new atlas.data.Point([-0.2, 51.5]));
//Add a layer for rendering point data as symbols.
map.layers.add(new atlas.layer.SymbolLayer(datasource, null, {
iconOptions: {
//Set the image option to the id of the custom icon that was loaded into the map resources.
image: 'my-yellow-pin',
anchor: 'top-left',
offset: [-5, -30]
}
}));
});
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Návod
Pokud chcete vykreslit pokročilé vlastní body, použijte několik vrstev vykreslování společně. Řekněme například, že chcete mít více připínáčků, které mají stejnou ikonu na různých barevných kruzích. Místo vytvoření skupiny obrázků pro každý překryv barev přidejte vrstvu symbolů nad bublinovou vrstvu. Ujistěte se, že připínáky odkazují na stejný zdroj dat. Tento přístup bude efektivnější než vytváření a údržba spousty různých imagí.
Další zdroje informací:
- Vytvoření zdroje dat
- Přidání vrstvy symbolu
- Přidání značek HTML
- Použití výrazů stylu řízených daty
- Možnosti vrstvy ikony symbolu
- Možnost vrstvy textu symbolu
- Třída značky HTML
- Možnosti značek HTML
Přidání lomené čáry
Pomocí čar můžete znázorňovat čáru nebo cestu na mapě. Vytvoříme na mapě přerušovanou čáru.
Před: Mapy Google
Třída Polyline přijímá sadu možností. Předejte pole souřadnic v path
možnosti polylinie.
//Get the center of the map.
var center = map.getCenter();
//Define a symbol using SVG path notation, with an opacity of 1.
var lineSymbol = {
path: 'M 0,-1 0,1',
strokeOpacity: 1,
scale: 4
};
//Create the polyline.
var line = new google.maps.Polyline({
path: [
center,
new google.maps.LatLng(center.lat() - 0.5, center.lng() - 1),
new google.maps.LatLng(center.lat() - 0.5, center.lng() + 1)
],
strokeColor: 'red',
strokeOpacity: 0,
strokeWeight: 4,
icons: [{
icon: lineSymbol,
offset: '0',
repeat: '20px'
}]
});
//Add the polyline to the map.
line.setMap(map);
Po: Azure Maps
Lomené čáry se nazývají LineString
nebo MultiLineString
objekty. Tyto objekty lze přidat do zdroje dat a vykreslit pomocí vrstvy čáry. Přidejte LineString
ke zdroji dat a poté přidejte zdroj dat do LineLayer
pro jeho vykreslení.
//Get the center of the map.
var center = map.getCamera().center;
//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Create a line and add it to the data source.
datasource.add(new atlas.data.LineString([
center,
[center[0] - 1, center[1] - 0.5],
[center[0] + 1, center[1] - 0.5]
]));
//Add a layer for rendering line data.
map.layers.add(new atlas.layer.LineLayer(datasource, null, {
strokeColor: 'red',
strokeWidth: 4,
strokeDashArray: [3, 3]
}));
Další zdroje informací:
Přidání mnohoúhelníku
Azure Maps a Google Maps poskytují podobnou podporu pro mnohoúhelníky. Mnohoúhelníky se používají k reprezentaci oblasti na mapě. Následující příklady ukazují, jak vytvořit mnohoúhelník, který tvoří trojúhelník na základě středové souřadnice mapy.
Před: Mapy Google
Třída Polygon přijímá různé možnosti. Předejte pole souřadnic do možnosti paths
mnohoúhelníku.
//Get the center of the map.
var center = map.getCenter();
//Create a polygon.
var polygon = new google.maps.Polygon({
paths: [
center,
new google.maps.LatLng(center.lat() - 0.5, center.lng() - 1),
new google.maps.LatLng(center.lat() - 0.5, center.lng() + 1),
center
],
strokeColor: 'red',
strokeWeight: 2,
fillColor: 'rgba(0, 255, 0, 0.5)'
});
//Add the polygon to the map
polygon.setMap(map);
Po: Azure Maps
Přidejte Polygon
nebo MultiPolygon
objekty do zdroje dat. Vykreslení objektu na mapě pomocí vrstev Vykreslení oblasti mnohoúhelníku pomocí polygonové vrstvy A vykreslujte obrys mnohoúhelníku pomocí vrstvy čáry.
//Get the center of the map.
var center = map.getCamera().center;
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Create a polygon and add it to the data source.
datasource.add(new atlas.data.Polygon([
center,
[center[0] - 1, center[1] - 0.5],
[center[0] + 1, center[1] - 0.5],
center
]));
//Add a polygon layer for rendering the polygon area.
map.layers.add(new atlas.layer.PolygonLayer(datasource, null, {
fillColor: 'rgba(0, 255, 0, 0.5)'
}));
//Add a line layer for rendering the polygon outline.
map.layers.add(new atlas.layer.LineLayer(datasource, null, {
strokeColor: 'red',
strokeWidth: 2
}));
Další zdroje informací:
- Přidání mnohoúhelníku do mapy
- Přidání kruhu do mapy
- Možnosti polygonové vrstvy
- Možnosti vrstvy linek
- Použití výrazů stylu řízených daty
Zobrazení informačního okna
Další informace o entitě lze zobrazit na mapě jako google.maps.InfoWindow
třídu v Mapách Google. V Azure Maps lze tuto funkci dosáhnout pomocí atlas.Popup
třídy. Další příklady přidají do mapy značku. Po kliknutí na značku se zobrazí informační okno nebo automaticky otevírané okno.
Před: Mapy Google
Vytvořte instanci informačního okna pomocí konstruktoru google.maps.InfoWindow
.
<!-- Google Maps Script Reference -->
<script async src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}&loading=async"></script>
<script type='text/javascript'>
async function initMap() {
// Request needed libraries.
const { Map, InfoWindow } = await google.maps.importLibrary("maps");
const { AdvancedMarkerElement, PinElement } = await google.maps.importLibrary("marker",);
const map = new Map(document.getElementById("myMap"), {
zoom: 12,
center: { lat: 47.608458, lng: -122.335077 },
disableDefaultUI: true,
mapId: "4504f8b37365c3d0",
});
// Create an info window to share between markers.
const infoWindow = new InfoWindow();
// Create the marker.
const pin = new PinElement();
const marker = new AdvancedMarkerElement({
position: { lat: 47.608458, lng: -122.335077 },
map,
title: "<B>Hello World!</B>",
content: pin.element,
gmpClickable: true,
});
// Add a click listener for each marker, and set up the info window.
marker.addListener("click", ({ domEvent, latLng }) => {
const { target } = domEvent;
infoWindow.close();
infoWindow.setContent(marker.title);
infoWindow.open(marker.map, marker);
});
}
</script>
Po: Azure Maps
Pomocí vyskakovacího okna zobrazíme další informace o umístění. Předat HTML string
nebo HTMLElement
objekt do možnosti content
vyskakovacího okna. Máte-li zájem, vyskakovací okna lze zobrazit nezávisle na libovolném obrazci. Proto automaticky otevíraná okna vyžadují, aby byla zadána position
hodnota.
position
Zadejte hodnotu. Pokud chcete zobrazit vyskakovací okno, zavolejte metodu open
a předejte map
, ve které se má okno zobrazit.
//Add a marker to the map in which to display a popup for.
var marker = new atlas.HtmlMarker({
position: [-122.33, 47.6]
});
//Add the marker to the map.
map.markers.add(marker);
//Create a popup.
var popup = new atlas.Popup({
content: '<div style="padding:5px"><b>Hello World!</b></div>',
position: [-122.33, 47.6],
pixelOffset: [0, -35]
});
//Add a click event to the marker to open the popup.
map.events.add('click', marker, function () {
//Open the popup
popup.open(map);
});
Poznámka:
Totéž můžete udělat pomocí symbolu, bubliny, čáry nebo mnohoúhelníku tak, že předáte zvolenou vrstvu kódu události mapy místo značky.
Další zdroje informací:
- Přidat vyskakovací okno
- Vyskakovací okno s multimediálním obsahem
- Vyskakovací okna na obrazcích
- Opětovné použití vyskakovacího okna s více piny
- Popup – třída
- Možnosti vyskakovacího okna
Import souboru GeoJSON
Google Maps podporuje načítání a dynamické stylování dat GeoJSON prostřednictvím google.maps.Data
třídy. Funkce této třídy více odpovídají stylům založeným na datech služby Azure Maps. Ale je tu klíčový rozdíl. Pomocí Google Maps zadáte funkci zpětného volání. Obchodní logika pro stylování jednotlivých funkcí zpracovaných jednotlivě ve vlákně uživatelského rozhraní. Ve službě Azure Maps ale vrstvy podporují zadávání výrazů řízených daty jako možnosti stylů. Tyto výrazy se zpracovávají v době vykreslování v samostatném vlákně. Přístup Azure Maps zlepšuje výkon vykreslování. Tato výhoda je vnímaná, když je potřeba rychle zpracovat větší datové sady.
Následující příklady načítají zdroj GeoJSON všech zemětřesení za posledních sedm dní z USGS. Data zemětřesení se na mapě vykreslují jako škálované kruhy. Barva a měřítko každého kruhu závisí na velikosti každého zemětřesení, které je uloženo ve "mag"
vlastnosti každé funkce v sadě dat. Pokud je velikost větší nebo rovna pěti, kruh je červený. Pokud je větší nebo rovno třem, ale menší než pět, kruh je oranžový. Pokud je menší než tři, kruh je zelený. Poloměr každého kruhu je exponenciální hodnota velikosti vynásobená 0,1.
Před: Mapy Google
Zadejte jednu funkci zpětného volání v metodě map.data.setStyle
. Uvnitř funkce zpětného volání použijte obchodní logiku pro každou funkci. Načtěte zdroj GeoJSON metodou map.data.loadGeoJson
.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var map;
var earthquakeFeed = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson';
function initMap() {
map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(20, -160),
zoom: 2
});
//Define a callback to style each feature.
map.data.setStyle(function (feature) {
//Extract the 'mag' property from the feature.
var mag = parseFloat(feature.getProperty('mag'));
//Set the color value to 'green' by default.
var color = 'green';
//If the mag value is greater than 5, set the color to 'red'.
if (mag >= 5) {
color = 'red';
}
//If the mag value is greater than 3, set the color to 'orange'.
else if (mag >= 3) {
color = 'orange';
}
return /** @type {google.maps.Data.StyleOptions} */({
icon: {
path: google.maps.SymbolPath.CIRCLE,
//Scale the radius based on an exponential of the 'mag' value.
scale: Math.exp(mag) * 0.1,
fillColor: color,
fillOpacity: 0.75,
strokeWeight: 2,
strokeColor: 'white'
}
});
});
//Load the data feed.
map.data.loadGeoJson(earthquakeFeed);
}
</script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}" async defer></script>
</head>
<body>
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Po: Azure Maps
GeoJSON je základní datový typ v Azure Maps. Importujte ho do zdroje dat pomocí metody datasource.importFromUrl
. Použijte vrstvu bublin. Bublinová vrstva poskytuje funkce pro vykreslování škálovaných kruhů na základě vlastností funkcí ve zdroji dat. Místo funkce zpětného volání se obchodní logika převede na výraz a předá se do možností stylu. Výrazy definují, jak obchodní logika funguje. Výrazy lze předat do jiného vlákna a vyhodnotit je na základě dat funkce. Do Azure Maps je možné přidat více zdrojů dat a vrstev, z nichž každá má jinou obchodní logiku. Tato funkce umožňuje vykreslení více datových sad na mapě různými způsoby.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map;
var earthquakeFeed = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson';
function initMap() {
//Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-160, 20],
zoom: 1,
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Load the earthquake data.
datasource.importDataFromUrl(earthquakeFeed);
//Create a layer to render the data points as scaled circles.
map.layers.add(new atlas.layer.BubbleLayer(datasource, null, {
//Make the circles semi-transparent.
opacity: 0.75,
color: [
'case',
//If the mag value is greater than 5, return 'red'.
['>=', ['get', 'mag'], 5],
'red',
//If the mag value is greater than 3, return 'orange'.
['>=', ['get', 'mag'], 3],
'orange',
//Return 'green' as a fallback.
'green'
],
//Scale the radius based on an exponential of the 'mag' value.
radius: ['*', ['^', ['e'], ['get', 'mag']], 0.1]
}));
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
- Přidání vrstvy symbolu
- Přidání bublinové vrstvy
- Seskupování dat bodů ve Web SDK
- Použití výrazů stylu řízených daty
Shlukování markerů
Když se na mapě zobrazí velké množství datových bodů, můžou se body překrývat, což ztěžuje čitelnost a použití mapy. Clustering bodových dat je proces kombinování datových bodů, které jsou blízko sebe, a jejich reprezentace na mapě jako jeden clusterovaný datový bod. Když se uživatel přiblíží k mapě, clustery se rozdělí do jednotlivých datových bodů. Seskupování datových bodů vylepšuje uživatelskou zkušenost a zvyšuje výkon map.
V následujících příkladech kód načte geoJSON data zemětřesení z minulého týdne a přidá je do mapy. Clustery se vykreslují jako škálované a barevné kruhy. Měřítko a barva kruhů závisí na počtu bodů, které obsahují.
Poznámka:
Google Maps a Azure Maps používají mírně odlišné algoritmy clusteringu. Proto se někdy distribuce bodů v clusterech liší.
Před: Mapy Google
Použijte knihovnu MarkerCluster pro seskupování značek. Ikony clusteru jsou omezené na obrázky, které mají jako název čísla jedna až pět. Jsou hostované ve stejném adresáři.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var earthquakeFeed = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson';
async function initMap() {
const AdvancedMarkerElement = await google.maps.importLibrary("marker");
const map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(20, -160),
zoom: 2,
mapId: "DEMO_MAP_ID", // Map ID is required for advanced markers.
});
//Download the GeoJSON data.
fetch(earthquakeFeed)
.then(function (response) {
return response.json();
}).then(function (data) {
//Loop through the GeoJSON data and create a marker for each data point.
var markers = [];
for (var i = 0; i < data.features.length; i++) {
markers.push(new google.maps.marker.AdvancedMarkerElement({
position: new google.maps.LatLng(data.features[i].geometry.coordinates[1], data.features[i].geometry.coordinates[0])
}));
}
//Create a marker clusterer instance and tell it where to find the cluster icons.
var markerCluster = new markerClusterer.MarkerClusterer({map, markers});
});
}
</script>
<!-- Load the marker cluster library. -->
<script src="https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js"></script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}&loading=async"></script>
</head>
<body>
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Po: Azure Maps
Přidání a správa dat ve zdroji dat Připojte zdroje dat a vrstvy a pak vykreslujte data. Třída DataSource
v Azure Maps nabízí několik možností clusteringu.
-
cluster
– Nařizuje zdroji dat, aby seskupil data bodů. -
clusterRadius
- Poloměr v pixelech pro seskupení bodů. -
clusterMaxZoom
- Maximální úroveň přiblížení, ve které dochází ke clusteringu. Pokud přiblížíte více než tuto úroveň, zobrazí se všechny body jako symboly. -
clusterProperties
– Definuje vlastní vlastnosti, které se počítají pomocí výrazů pro všechny body v každém klastru a přidávají se k vlastnostem každého klastru.
Když je clustering povolený, zdroj dat odesílá clusterované a neclusterované datové body do vrstev pro vykreslování. Zdroj dat dokáže seskupit stovky tisíc datových bodů. Clusterovaný datový bod má následující vlastnosti:
Název vlastnosti | Typ | Popis |
---|---|---|
cluster |
booleovský | Označuje, jestli funkce představuje cluster. |
cluster_id |
řetězec | Jedinečné ID clusteru, které lze použít s DataSource getClusterExpansionZoom , getClusterChildren a getClusterLeaves metody. |
point_count |
Číslo | Počet bodů, které cluster obsahuje. |
point_count_abbreviated |
řetězec | Řetězec, který zkracuje point_count hodnotu, pokud je dlouhá. (například 4 000 se změní na 4K) |
Třída DataSource
má následující pomocnou funkci pro přístup k dalším informacím o clusteru pomocí nástroje cluster_id
.
Metoda | Návratový typ | Popis |
---|---|---|
getClusterChildren(clusterId: number) |
Promise<Array<Feature<Geometry, any> | Tvar>> | Načte podřízené položky daného clusteru na další úrovni přiblížení. Tyto podřízené položky můžou být kombinací obrazců a podkluzů. Podclustery jsou funkce s vlastnostmi odpovídajícími clusteredProperties. |
getClusterExpansionZoom(clusterId: number) |
Číslo příslibu<> | Vypočítá úroveň zoomu, při které se shluk začne rozbalovat nebo rozdělovat. |
getClusterLeaves(clusterId: number, limit: number, offset: number) |
Promise<Array<Feature<Geometry, any> | Tvar>> | Načte všechny body v clusteru.
limit Nastavte, aby se vrátila podmnožina bodů, a použijte offset stránku k procházení bodů. |
Při vykreslování clusterovaných dat na mapě je často nejlepší použít dvě nebo více vrstev. Následující příklad používá tři vrstvy. Bublinová vrstva pro kreslení měřítkových barevných kruhů na základě velikosti klusterů. Vrstva symbolů, která vykreslí velikost clusteru jako text. A používá druhou vrstvu symbolů pro vykreslení neclusterovaných bodů. Další informace o dalších způsobech vykreslení clusterovaných dat naleznete v tématu Data bodu clusteringu ve webové sadě SDK.
Přímo naimportujte data GeoJSON pomocí importDataFromUrl
funkce ve DataSource
třídě v mapě Azure Maps.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map, datasource;
var earthquakeFeed = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_week.geojson';
function initMap() {
//Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-160, 20],
zoom: 1,
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource(null, {
//Tell the data source to cluster point data.
cluster: true
});
map.sources.add(datasource);
//Create layers for rendering clusters, their counts and unclustered points and add the layers to the map.
map.layers.add([
//Create a bubble layer for rendering clustered data points.
new atlas.layer.BubbleLayer(datasource, null, {
//Scale the size of the clustered bubble based on the number of points in the cluster.
radius: [
'step',
['get', 'point_count'],
20, //Default of 20 pixel radius.
100, 30, //If point_count >= 100, radius is 30 pixels.
750, 40 //If point_count >= 750, radius is 40 pixels.
],
//Change the color of the cluster based on the value on the point_cluster property of the cluster.
color: [
'step',
['get', 'point_count'],
'lime', //Default to lime green.
100, 'yellow', //If the point_count >= 100, color is yellow.
750, 'red' //If the point_count >= 750, color is red.
],
strokeWidth: 0,
filter: ['has', 'point_count'] //Only rendered data points which have a point_count property, which clusters do.
}),
//Create a symbol layer to render the count of locations in a cluster.
new atlas.layer.SymbolLayer(datasource, null, {
iconOptions: {
image: 'none' //Hide the icon image.
},
textOptions: {
textField: ['get', 'point_count_abbreviated'],
offset: [0, 0.4]
}
}),
//Create a layer to render the individual locations.
new atlas.layer.SymbolLayer(datasource, null, {
filter: ['!', ['has', 'point_count']] //Filter out clustered points from this layer.
})
]);
//Retrieve a GeoJSON data set and add it to the data source.
datasource.importDataFromUrl(earthquakeFeed);
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
- Přidání vrstvy symbolu
- Přidání bublinové vrstvy
- Seskupování dat bodů ve Web SDK
- Použití výrazů stylu řízených daty
Přidat tepelnou mapu
Teplotní mapy, označované také jako mapy hustoty bodů, jsou typem vizualizace dat. Používají se k reprezentaci hustoty dat pomocí rozsahu barev. A často se používají k zobrazení "horkých míst" dat na mapě. Heat mapy představují skvělý způsob, jak vykreslit velké datové sady bodů.
Následující příklady načtou zdroj GeoJSON všech zemětřesení za poslední měsíc z USGS a poté je vykreslí jako váženou tepelnou mapu. Vlastnost "mag"
se používá jako váha.
Před: Mapy Google
Pokud chcete vytvořit teplotní mapu, načtěte knihovnu vizualizace, přidáním &libraries=visualization
do adresy URL skriptu rozhraní API. Vrstva tepelných map v Mapách Google nepodporuje přímo data GeoJSON. Nejprve si stáhněte data a převeďte je na pole vážených datových bodů:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var map;
var url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson';
function initMap() {
var map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(20, -160),
zoom: 2,
mapTypeId: 'satellite'
});
//Download the GeoJSON data.
fetch(url).then(function (response) {
return response.json();
}).then(function (res) {
var points = getDataPoints(res);
var heatmap = new google.maps.visualization.HeatmapLayer({
data: points
});
heatmap.setMap(map);
});
}
function getDataPoints(geojson, weightProp) {
var points = [];
for (var i = 0; i < geojson.features.length; i++) {
var f = geojson.features[i];
if (f.geometry.type === 'Point') {
points.push({
location: new google.maps.LatLng(f.geometry.coordinates[1], f.geometry.coordinates[0]),
weight: f.properties[weightProp]
});
}
}
return points;
}
</script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}&libraries=visualization" async defer></script>
</head>
<body>
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Po: Azure Maps
Načtěte data GeoJSON do datového zdroje a připojte datový zdroj k vrstvě tepelné mapy. Vlastnost, která se používá pro váhu, lze předat do weight
možnosti pomocí výrazu. Přímo naimportujte data GeoJSON do Azure Maps pomocí importDataFromUrl
funkce ve DataSource
třídě.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map;
var earthquakeFeed = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_month.geojson';
function initMap() {
//Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-160, 20],
zoom: 1,
style: 'satellite',
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Load the earthquake data.
datasource.importDataFromUrl(earthquakeFeed);
//Create a layer to render the data points as a heat map.
map.layers.add(new atlas.layer.HeatMapLayer(datasource, null, {
weight: ['get', 'mag'],
intensity: 0.005,
opacity: 0.65,
radius: 10
}));
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
- Přidejte vrstvu teplotní mapy
- Třída vrstvy heat mapy
- Možnosti vrstvy teplotní mapy
- Použití výrazů stylu řízených daty
Překrýt dlaždicovou vrstvu
Vrstvy dlaždic v Azure Maps se označují jako překryvy obrázků v Google Maps. Vrstvy dlaždic umožňují překrýt velké obrázky, které byly rozděleny do menších dílčích obrázků, jež odpovídají systému dlaždic map. Tento přístup se běžně používá k překrytí velkých obrázků nebo velkých datových sad.
Následující příklady zobrazují vrstvu radarových dlaždic počasí z systému Iowa Environmental Mesonet, který je součástí Iowa State University.
Před: Mapy Google
V Mapách Google lze vrstvy dlaždic vytvořit pomocí google.maps.ImageMapType
třídy.
map.overlayMapTypes.insertAt(0, new google.maps.ImageMapType({
getTileUrl: function (coord, zoom) {
return "https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/" + zoom + "/" + coord.x + "/" + coord.y;
},
tileSize: new google.maps.Size(256, 256),
opacity: 0.8
}));
Po: Azure Maps
Přidejte do mapy vrstvu dlaždic podobně jako jakoukoli jinou vrstvu. Použijte formátovanou adresu URL, která obsahuje zástupné symboly pro x, y a zoom; {x}
, {y}
, {z}
označte vrstvě, kde má přistupovat k dlaždicím. Vrstvy dlaždic Azure Maps také podporují {quadkey}
, {bbox-epsg-3857}
a {subdomain}
zástupné symboly.
Návod
Ve službě Azure Maps lze vrstvy snadno vykreslit pod jiné vrstvy, včetně vrstev základní mapy. Často je žádoucí vykreslit vrstvy dlaždic pod popisky mapy, aby byly snadno čitelné. Metoda map.layers.add
přebírá druhý parametr, což je ID vrstvy, do které chcete vložit novou vrstvu pod. Pokud chcete vložit vrstvu dlaždic pod popisky mapy, použijte tento kód: map.layers.add(myTileLayer, "labels");
//Create a tile layer and add it to the map below the label layer.
map.layers.add(new atlas.layer.TileLayer({
tileUrl: 'https://mesonet.agron.iastate.edu/cache/tile.py/1.0.0/nexrad-n0q-900913/{z}/{x}/{y}.png',
opacity: 0.8,
tileSize: 256
}), 'labels');
Návod
Žádosti o dlaždici je možné zachytit pomocí transformRequest
možnosti mapy. To vám umožní v případě potřeby upravit nebo přidat hlavičky do požadavku.
Další zdroje informací:
Zobrazení provozních dat
Dopravní data mohou být zobrazena do Azure a Google Maps.
Před: Mapy Google
Překryjte data provozu na mapě pomocí vrstvy provozu.
var trafficLayer = new google.maps.TrafficLayer();
trafficLayer.setMap(map);
Po: Azure Maps
Azure Maps nabízí několik různých možností zobrazení provozu. Zobrazte dopravní incidenty, jako jsou například uzavírací silnice a nehody, jako jsou ikony na mapě. Překryvný tok provozu a barevně kódované cesty na mapě Barvy lze upravit na základě publikovaného limitu rychlosti vzhledem k normálnímu očekávanému zpoždění nebo absolutnímu zpoždění. Data incidentů v Azure Maps se aktualizují každou minutu a data toku se aktualizují každých dvě minuty.
Přiřaďte požadované hodnoty pro setTraffic
možnosti.
map.setTraffic({
incidents: true,
flow: 'relative'
});
Pokud vyberete některou z dopravních ikon v Azure Maps, zobrazí se ve vyskakovacím okně další informace.
Další zdroje informací:
Přidejte překrytí země
Azure i Google Maps podporují překrytí geograficky odvozovaných obrázků na mapě. Při posouvání a přiblížení mapy se pohybují a škálují obrázky s georeferencemi. V Google Maps se georeferencované obrázky označují jako zemské překryvy, zatímco v Azure Maps se nazývají vrstvy obrazu. Jsou skvělé pro vytváření plánů prostorového uspořádání, překrytí starých map nebo obrázků z dronu.
Před: Mapy Google
Zadejte adresu URL obrázku, který chcete překrýt, a ohraničující rámeček za účelem spojení obrázku s mapou. Tento příklad překryje obrázek mapy Newark New Jersey z roku 1922 na mapě.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var map, historicalOverlay;
function initMap() {
map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(40.740, -74.18),
zoom: 12
});
var imageBounds = {
north: 40.773941,
south: 40.712216,
east: -74.12544,
west: -74.22655
};
historicalOverlay = new google.maps.GroundOverlay(
'https://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg',
imageBounds);
historicalOverlay.setMap(map);
}
</script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}" async defer></script>
</head>
<body>
<div id="myMap" style="position:relative;width:600px;height:400px;"></div>
</body>
</html>
Spuštěním tohoto kódu v prohlížeči se zobrazí mapa, která vypadá jako na následujícím obrázku:
Po: Azure Maps
Použijte třídu atlas.layer.ImageLayer
ke překrytí georeferencovaných obrázků. Tato třída vyžaduje adresu URL obrázku a sadu souřadnic pro čtyři rohy obrázku. Image musí být hostovaná buď ve stejné doméně, nebo musí mít povolené cors.
Návod
Pokud máte pouze informace o severu, jihu, východě, západu a otočení a nemáte souřadnice pro každý roh obrázku, můžete použít statickou atlas.layer.ImageLayer.getCoordinatesFromEdges
metodu.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<script type='text/javascript'>
var map;
function initMap() {
//Initialize a map instance.
map = new atlas.Map('myMap', {
center: [-74.18, 40.740],
zoom: 12,
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create an image layer and add it to the map.
map.layers.add(new atlas.layer.ImageLayer({
url: 'newark_nj_1922.jpg',
coordinates: [
[-74.22655, 40.773941], //Top Left Corner
[-74.12544, 40.773941], //Top Right Corner
[-74.12544, 40.712216], //Bottom Right Corner
[-74.22655, 40.712216] //Bottom Left Corner
]
}));
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
Přidání dat KML do mapy
Azure i Google Maps můžou na mapě importovat a vykreslit data KML, KMZ a GeoRSS. Azure Maps také podporuje GPX, GML, soubory CSV s prostorovými daty, GeoJSON, dobře známý text (WKT), služby webového mapování (WMS), služby webových mapových dlaždic (WMTS) a služby funkcí webového mapování (WFS). Azure Maps čte soubory místně do paměti a ve většině případů dokáže zpracovat větší soubory KML.
Před: Mapy Google
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<script type='text/javascript'>
var map, historicalOverlay;
function initMap() {
map = new google.maps.Map(document.getElementById('myMap'), {
center: new google.maps.LatLng(0, 0),
zoom: 1
});
var layer = new google.maps.KmlLayer({
url: 'https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml',
map: map
});
}
</script>
<!-- Google Maps Script Reference -->
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap&key={Your-Google-Maps-Key}" async defer></script>
</head>
<body>
<div id="myMap" style="position:relative;width:600px;height:400px;"></div>
</body>
</html>
Spuštěním tohoto kódu v prohlížeči se zobrazí mapa, která vypadá jako na následujícím obrázku:
Po: Azure Maps
V Azure Maps je GeoJSON hlavním formátem dat používaným ve webové sadě SDK, více prostorových formátů dat je možné snadno integrovat pomocí modulu prostorových vstupně-výstupních operací. Tento modul má funkce pro čtení i zápis prostorových dat a obsahuje také jednoduchou datovou vrstvu, která může snadno vykreslovat data z libovolného z těchto prostorových formátů dat. Pokud chcete číst data v prostorovém datovém souboru, předejte do funkce adresu URL nebo nezpracovaná data jako řetězec nebo objekt blob atlas.io.read
. Tím se vrátí všechna analyzovaná data ze souboru, která se pak dají přidat do mapy. KmL je o něco složitější než většina prostorových dat, protože obsahuje mnohem více stylů informací. Třída SpatialDataLayer
podporuje většinu těchto stylů, ale obrázky ikon je nutné před načtením dat funkcí načíst do mapy a překryvy země musí být přidány jako vrstvy do mapy samostatně. Při načítání dat přes adresu URL by měla být hostována na koncovém bodu s povoleným CORS nebo by měla být služba proxy předána jako možnost do funkce pro čtení.
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.css" type="text/css" />
<script src="https://atlas.microsoft.com/sdk/javascript/mapcontrol/3/atlas.min.js"></script>
<!-- Add reference to the Azure Maps Spatial IO module. -->
<script src="https://atlas.microsoft.com/sdk/javascript/spatial/0/atlas-spatial.js"></script>
<script type='text/javascript'>
var map, datasource, layer;
function initMap() {
//Initialize a map instance.
map = new atlas.Map('myMap', {
view: 'Auto',
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at https://azure.com/maps
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
}
});
//Wait until the map resources are ready.
map.events.add('ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Add a simple data layer for rendering the data.
layer = new atlas.layer.SimpleDataLayer(datasource);
map.layers.add(layer);
//Read a KML file from a URL or pass in a raw KML string.
atlas.io.read('https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml').then(async r => {
if (r) {
//Check to see if there are any icons in the data set that need to be loaded into the map resources.
if (r.icons) {
//For each icon image, create a promise to add it to the map, then run the promises in parallel.
var imagePromises = [];
//The keys are the names of each icon image.
var keys = Object.keys(r.icons);
if (keys.length !== 0) {
keys.forEach(function (key) {
imagePromises.push(map.imageSprite.add(key, r.icons[key]));
});
await Promise.all(imagePromises);
}
}
//Load all features.
if (r.features && r.features.length > 0) {
datasource.add(r.features);
}
//Load all ground overlays.
if (r.groundOverlays && r.groundOverlays.length > 0) {
map.layers.add(r.groundOverlays);
}
//If bounding box information is known for data, set the map view to it.
if (r.bbox) {
map.setCamera({ bounds: r.bbox, padding: 50 });
}
}
});
});
}
</script>
</head>
<body onload="initMap()">
<div id='myMap' style='position:relative;width:600px;height:400px;'></div>
</body>
</html>
Další zdroje informací:
Další ukázky kódu
Tady je několik dalších ukázek kódu souvisejících s migrací Google Maps:
- Nástroje kreslení
- Omezit mapu na posouvání dvěma prsty
- Omezit přiblížení kolečka posuvníku
- Vytvoření ovládacího prvku na celou obrazovku
Služby:
- Použití modulu služeb Azure Maps
- Hledání bodů zájmu
- Získání informací ze souřadnice (zpětné geografické kódování)
- Zobrazit navigační pokyny z A do B
- Automatické návrhy hledání s uživatelským rozhraním jQuery
Mapování tříd Google Maps V3 na Azure Maps Web SDK
Následující dodatek obsahuje křížový odkaz na běžně používané třídy v Google Maps V3 a ekvivalentní webovou sadu SDK služby Azure Maps.
Základní třídy
Mapy Google | Azure Maps |
---|---|
google.maps.Map |
atlas. Mapa |
google.maps.InfoWindow |
atlas. Vyskakovací okno |
google.maps.InfoWindowOptions |
atlas.Možnosti automaticky otevíraného okna |
google.maps.LatLng |
atlas.data.Position |
google.maps.LatLngBounds |
atlas.data.BoundingBox |
google.maps.MapOptions |
atlas. CameraOptions atlas. CameraBoundsOptions atlas. ServiceOptions atlas. StyleOptions atlas. UserInteractionOptions |
google.maps.Point |
atlas. Pixel |
Překryvné třídy
Mapy Google | Azure Maps |
---|---|
google.maps.Marker |
atlas. HtmlMarker atlas.data.Point |
google.maps.MarkerOptions |
atlas. HtmlMarkerOptions atlas.layer.SymbolLayer atlas. SymbolLayerOptions atlas. IconOptions atlas. Možnosti textu atlas.layer.BubbleLayer atlas. BubbleLayerOptions |
google.maps.Polygon |
atlas.data.Polygon |
google.maps.PolygonOptions |
atlas.layer.PolygonLayer atlas. PolygonLayerOptions atlas.layer.LineLayer atlas. LineLayerOptions |
google.maps.Polyline |
atlas.data.LineString |
google.maps.PolylineOptions |
atlas.layer.LineLayer atlas. LineLayerOptions |
google.maps.Circle |
Viz Přidání kruhu na mapu |
google.maps.ImageMapType |
atlas. TileLayer |
google.maps.ImageMapTypeOptions |
atlas. TileLayerOptions |
google.maps.GroundOverlay |
atlas.layer.ImageLayer atlas. ImageLayerOptions |
Třídy služeb
Webová sada SDK služby Azure Maps obsahuje modul služeb, který je možné načíst samostatně. Tento modul zabalí služby Azure Maps REST s webovým rozhraním API a dá se použít v javascriptových, typescriptových a Node.js aplikacích.
Mapy Google | Azure Maps |
---|---|
google.maps.Geocoder |
atlas.service.SearchUrl |
google.maps.GeocoderRequest |
atlas. Možnosti vyhledávací adresy [atlas. SearchAddressReverseOptions] atlas. SearchAddressReverseCrossStreetOptions atlas. SearchAddressStructuredOptions atlas. SearchAlongRouteOptions atlas. SearchFuzzyOptions atlas. SearchInsideGeometryOptions atlas. SearchNearbyOptions atlas. SearchPOIOptions atlas. Možnosti vyhledávání POIC |
google.maps.DirectionsService |
atlas.service.RouteUrl |
google.maps.DirectionsRequest |
atlas. CalculateRouteDirectionsOptions |
google.maps.places.PlacesService |
f |
Knihovny
Knihovny přidávají do mapy další funkce. Mnohé z těchto knihoven jsou v základní sadě SDK služby Azure Maps. Tady je několik ekvivalentních tříd, které se mají použít místo těchto knihoven Google Maps.
Mapy Google | Azure Maps |
---|---|
Knihovna výkresů | Modul nástrojů pro kreslení |
Knihovna geometrie | atlas.math |
Knihovna vizualizací | Vrstva teplotní mapy |
Vyčistěte prostředky
Není třeba žádné prostředky čistit.
Další kroky
Další informace o migraci na Azure Maps: