Adicionar uma camada de dados simples
O SDK da Web do Azure Mapas fornece um módulo de E/S Espacial que inclui uma classe SimpleDataLayer
. Essa classe facilita a renderização de recursos estilizados em um mapa. Ela pode até mesmo renderizar conjuntos de dados que têm propriedades de estilo e conjuntos de dados que contêm tipos de geometria misturados.
A camada de dados simples alcança essa funcionalidade encapsulando várias camadas de renderização e usando expressões de estilo. As expressões de estilo pesquisam camadas encapsuladas em busca de propriedades de estilo comuns. As funções atlas.io.read
e atlas.io.write
usam essas propriedades para ler e gravar estilos em um formato de arquivo com suporte. Ao adicionar propriedades a um formato de arquivo com suporte, você pode usar o arquivo para fins como a exibição de recursos estilizados em um mapa.
A classe SimpleDataLayer
também fornece um recurso pop-up interno com um modelo pop-up. O pop-up é exibido quando um recurso é selecionado. Essa camada também dá suporte a dados clusterizados. Quando um cluster é selecionado, o mapa amplia o cluster e o expande em pontos individuais e subclusters. Você poderá desabilitar o recurso pop-up se não precisar dele.
A classe SimpleDataLayer
se destina a ser usada em conjuntos de dados grandes que incluem recursos com muitos tipos e estilos de geometria aplicados. Quando você usa essa classe, ela adiciona uma sobrecarga de seis camadas que contêm expressões de estilo. Caso você precise renderizar apenas alguns tipos de geometria e estilos em um recurso, talvez seja mais eficiente usar uma camada de renderização básica. Para obter mais informações, veja Adicionar uma camada de bolha ao mapa, Adicionar uma camada de linha ao mapa e Adicionar uma camada de polígono ao mapa.
Usar uma camada de dados simples
Você pode usar a classe SimpleDataLayer
como as outras camadas de renderização. O código a seguir mostra como usar uma camada de dados simples em um mapa:
//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Add a simple data layer for rendering data.
var layer = new atlas.layer.SimpleDataLayer(datasource);
map.layers.add(layer);
O seguinte snippet de código demonstra como usar uma camada de dados simples que referencia os dados de uma fonte online:
<script src="https://atlas.microsoft.com/sdk/javascript/spatial/0/atlas-spatial.min.js"></script>
<script>
function InitMap() {
var map = new atlas.Map("myMap", {
center: [-73.967605, 40.780452],
zoom: 12,
view: "Auto",
//Add authentication details to connect to Azure Maps.
authOptions: {
// Get an Azure Maps key at https://azuremaps.com/.
authType: "subscriptionKey",
subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
}
});
//Wait until the map resources are ready.
map.events.add("ready", function () {
//Create a data source and add it to the map.
var datasource = new atlas.source.DataSource();
map.sources.add(datasource);
//Add a simple data layer for rendering data.
var layer = new atlas.layer.SimpleDataLayer(datasource);
map.layers.add(layer);
//Load an initial data set.
const dataSet = {
type: "FeatureCollection",
bbox: [0, 0, 0, 0],
features: [
{
type: "Feature",
geometry: {
type: "Point",
coordinates: [0, 0]
},
properties: {
color: "red"
}
}
]
};
loadDataSet(dataSet);
function loadDataSet(r) {
//Update the features in the data source.
datasource.setShapes(r);
//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>
Quando você adiciona recursos à fonte de dados, a camada de dados simples os renderiza da maneira mais apropriada. Você pode definir estilos como propriedades para cada recurso individual.
O código de exemplo anterior mostra um recurso de ponto GeoJSON (Geographic JavaScript Object Notation) com uma propriedade color
definida como red
.
Este código de exemplo renderiza o recurso de ponto usando a camada de dados simples e o resultado aparece conforme descrito a seguir.
Observação
O valor da fonte de dados "coordinates": [0, 0]
substitui as coordenadas center: [-73.967605, 40.780452]
definidas quando o mapa foi inicializado.
A camada de dados simples é uma ferramenta avançada nos seguintes cenários:
- Uma fonte de dados inclui vários tipos de recursos.
- Os recursos do conjunto de dados têm várias propriedades de estilo que são definidas individualmente.
- Você não tem certeza do que o conjunto de dados contém.
Por exemplo, ao analisar feeds de dados XML, talvez você não saiba o estilo e os tipos de geometria dos recursos. A amostra Opções da camada de dados simples mostra como a camada de dados simples renderiza os recursos de um arquivo KML (Keyhole Markup Language). Você também pode ver as opções na classe SimpleDataLayer
. Para obter o código-fonte deste exemplo, vejaSimple data layer options.html nos exemplos de código do Azure Mapas no GitHub.
Observação
Essa camada de dados simples usa a classe popup template para exibir os balões de KML ou as propriedades de recurso como uma tabela. Por padrão, todo o conteúdo renderizado no pop-up é colocado em área restrita dentro de um iFrame como um recurso de segurança. Porém, há limitações:
- Todas as funcionalidades de bloqueio de ponteiro, funcionalidade de navegação superior, scripts e formulários estão desabilitados. Os links podem ser abertos em uma nova guia quando são selecionados.
- Os navegadores mais antigos que não dão suporte ao parâmetro
srcdoc
em iFrames podem renderizar apenas uma pequena quantidade do conteúdo.
Se você confiar nos dados carregados nos pop-ups e quiser que os scripts pop-up possam acessar seu aplicativo, desabilite esse recurso. Basta definir a opção sandboxContent
no modelo pop-up como false
.
Propriedades de estilo com suporte padrão
A camada de dados simples encapsula várias das camadas de renderização básicas: bolha, símbolo, linha, polígono e polígono extrudado. Ela usa expressões para pesquisar propriedades de estilo válidas em recursos individuais.
Os dois conjuntos principais de nomes de propriedades com suporte são o Azure Mapas e o GitHub. Há suporte para a maioria dos nomes de propriedades das opções de camada do Azure Mapas na camada de dados simples como propriedades de estilo de recursos. Algumas opções de camada incluem expressões que dão suporte a nomes de propriedades de estilo que o GitHub normalmente usa.
O suporte de mapa GeoJSON do GitHub define esses nomes de propriedade, que são usados para estilizar arquivos GeoJSON armazenados e renderizados na plataforma. Há suporte para a maioria das propriedades de definição de estilo do GitHub na camada de dados simples, exceto as propriedades de definição de estilo marker-symbol
.
Se o leitor encontrar uma propriedade de estilo menos comum, ele a converterá na propriedade de estilo do Azure Mapas mais similar. Além disso, você pode substituir as expressões de estilo padrão usando a função getLayers
da camada de dados simples e atualizando as opções em uma das camadas.
As seções a seguir trazem detalhes sobre as propriedades de estilo padrão com suporte na camada de dados simples. A ordem dos nomes de propriedades com suporte também é a prioridade. Se duas propriedades de estilo forem definidas para a mesma opção de camada, a primeira na lista terá precedência. As cores podem ter qualquer valor de cor do CSS3 (HEX, RGB, RGBA, HSL ou HSLA) ou um valor de cor nomeada.
Propriedades de estilo de camada de bolha
Se um recurso for um Point
ou um MultiPoint
e não tiver uma propriedade de imagem a ser usada como um ícone personalizado para renderizar o ponto como um símbolo, ele será renderizado com uma BubbleLayer
.
Opção de camada | Nomes de propriedades com suporte | Valor padrão |
---|---|---|
color |
color , marker-color |
'#1A73AA' |
radius |
size
1, marker-size 2, scale 1 |
8 |
strokeColor |
strokeColor , stroke |
'#FFFFFF' |
1 Os valores de tamanho e escala são considerados valores escalares e são multiplicados por 8.
2 Se a opção marker-size
do GitHub for especificada, o raio usará os seguintes valores:
Tamanho do marcador | Raio |
---|---|
small |
6 |
medium |
8 |
large |
12 |
Os clusters também são renderizados na camada de bolha. Por padrão, o raio de um cluster é definido como 16. A cor do cluster varia dependendo do número de pontos no cluster, conforme definido na tabela a seguir:
Número de pontos | Cor |
---|---|
>= 100 | red |
>= 10 | yellow |
< 10 | green |
Propriedades de estilo de símbolo
Se um recurso for um Point
ou MultiPoint
, com uma propriedade de imagem usada como um ícone personalizado para renderizar o ponto como um símbolo, ele será renderizado com uma SymbolLayer
.
Opção de camada | Nomes de propriedades com suporte | Valor padrão |
---|---|---|
image |
image |
none |
size |
size , marker-size 1 |
1 |
rotation |
rotation |
0 |
offset |
offset |
[0, 0] |
anchor |
anchor |
'bottom' |
1 Se a opção marker-size
do GitHub for especificada, os seguintes valores serão usados para a opção de tamanho do ícone:
Tamanho do marcador | Tamanho do símbolo |
---|---|
small |
0.5 |
medium |
1 |
large |
2 |
Se o recurso de ponto for um cluster, a propriedade point_count_abbreviated
será renderizada como um rótulo de texto. Nenhuma imagem é renderizada.
Propriedades de estilo de linha
Se o recurso for uma LineString
, uma MultiLineString
, um Polygon
ou um MultiPolygon
, ele será renderizado com uma LineLayer
.
Opção de camada | Nomes de propriedades com suporte | Valor padrão |
---|---|---|
strokeColor |
strokeColor , stroke |
'#1E90FF' |
strokeWidth |
strokeWidth , stroke-width , stroke-thickness |
3 |
strokeOpacity |
strokeOpacity , stroke-opacity |
1 |
Propriedades de estilo de polígono
Se o recurso for um Polygon
ou um MultiPolygon
, e não tiver uma propriedade de altura ou se a propriedade de altura for zero, ele será renderizado com uma PolygonLayer
.
Opção de camada | Nomes de propriedades com suporte | Valor padrão |
---|---|---|
fillColor |
fillColor , fill |
'#1E90FF' |
fillOpacity |
fillOpacity , 'fill-opacity |
0.5 |
Propriedades de estilo de polígono extrudado
Se o recurso for um Polygon
ou um MultiPolygon
e tiver uma propriedade de altura com um valor maior que zero, ele será renderizado com uma PolygonExtrusionLayer
.
Opção de camada | Nomes de propriedades com suporte | Valor padrão |
---|---|---|
base |
base |
0 |
fillColor |
fillColor , fill |
'#1E90FF' |
height |
height |
0 |
Conteúdo relacionado
Saiba mais sobre as classes e os métodos neste artigo:
Veja os seguintes artigos para obter mais exemplos de código para adicionar aos seus mapas: