ArcGIS API for JavaScript ile Web Uygulamaları – 9 Efektler
Efektler
Efektler harita üzerinde gösterimi yapılan objelerde görsel olarak daha fazla bilgi aktarımı için kullanılmaktadır. Görsel efektler sayesinde gösterimi yapılan bilgi daha dikkat çekici ve göze hoş görünümü sağlanabilir.
Desteklenen efektler: “bloom”, “blur”, “brightness”, “contrast”, “drop-shadow”, “grayscale”, “hue-rotate”, “invert”, “opacity”, “saturate” ve “sepia”.
Efekt kullanımı tek bir metin olarak belirleyebileceğiniz gibi farklı ölçek değerlerine göre farklı efektler ile filtreleme yapılarak da gerçekleştirilebilmektir.
Metin olarak kullanım durumunda tüm ölçeklerde efekt uygulanır:
layer.effect = "brightness(5) hue-rotate(270deg) contrast(200%)";
Farklı ölçeklerde ve filtre uygulayarak kullanım şekli:
layerView.effect = {
filter: featureFilter,
includedEffect: [
{
scale: 36978595, // düşük ölçekte
value: "drop-shadow(3px, 3px, 4px) brightness(400%)",
},
{
scale: 18489297, // orta ölçekte scale
value: "drop-shadow(2px, 2px, 3px) brightness(200%)",
},
{
scale: 4622324, // geniş ölçekte
value: "drop-shadow(1px, 1px, 2px)",
}
],
// tüm ölçeklerde uygulanır
excludedEffect: "brightness(80%)"
};
Adımlar
- Bilgisayarınızda öncelikle bir web sunucusu bulunmalı. Bu web sunucusunda bir HTML dosyası barındırın ve herhangi bir metin editörü dosyayı açınız.
- Önceki blog yazılarımızdan HTML şablonu kopyalayınız.
Harita üzerinde Türkiye illeri objelerine basıldığında, her basım olayından sonra sadece ilgili basılan objeye efekt uygulanmasını gerçekleştireceğiz.
Resimde görüldüğü gibi her il kendi geometri sınırları doğrultusunda ayrı ayrı görüntülenmektedir.
Uygulayacağımız efekt sayesinde basılan objenin görselini öne çıkarmış oluyoruz efekt kullanılarak.
Efekt kullanımına ait HTML kodu aşağıda belirtilmiştir.
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title>ArcGIS JavaScript API Örnekleri: Efektler</title>
<style>
html,
body,
#haritaBlogu {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
</style>
<link rel="stylesheet" href="https://js.arcgis.com/4.20/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.20/"></script>
<script>
require([
"esri/config",
"esri/Map",
"esri/views/MapView",
"esri/Graphic",
"esri/layers/FeatureLayer",
"esri/layers/GraphicsLayer",
"esri/renderers/SimpleRenderer",
"esri/symbols/SimpleFillSymbol",
"esri/Color",
], function (esriConfig, Map, MapView, Graphic, FeatureLayer, GraphicsLayer, SimpleRenderer, SimpleFillSymbol, Color) {
(async () => {
esriConfig.apiKey = "XXX"
let animation;
const countryGraphicsLayer = new GraphicsLayer({
blendMode: "destination-in",
effect: "bloom(200%)"
});
const symbol = {
type: "simple-fill",
color: "white",
outline: null
};
const fLayer = new FeatureLayer({
popupEnabled: false,
portalItem: {
id: "XXX" // Türkiye verisine ait Portal içeriği
},
outFields: ["OBJECTID"],
minScale: 0,
maxScale: 0,
renderer: new SimpleRenderer({
symbol: new SimpleFillSymbol({
color: new Color("rgb(255,200,81)"),
outline: {
style: "solid",
width: 1,
color: new Color("rgb(249,168,0")
}
})
}),
effect: "grayscale(0.3) drop-shadow(0px 7px 20px gray)"
});
var map = new Map({
basemap:
{
baseLayers: [
fLayer
]
},
});
var view = new MapView({
container: "haritaBlogu",
map: map,
center: [35, 39], // boylam, enlem
zoom: 7
});
var layerView = await view.whenLayerView(fLayer);
view.on("pointer-down", function (event) {
const opts = {
include: fLayer
}
view.hitTest(event, opts).then(function (response) {
if (response.results.length) {
const graphic = response.results[0].graphic;
layerView.effect = {
filter: {
objectIds: [response.results[0].graphic.attributes.OBJECTID]
},
includedEffect: [
{
scale: 36978595, // küçük ölçekte
value: "drop-shadow(4px, 4px, 4px) brightness(400%)",
},
{
scale: 18489297, // orta ölçekte
value: "drop-shadow(3px, 3px, 3px) brightness(200%)",
},
{
scale: 4622324, // büyük ölçekte
value: "drop-shadow(2px, 2px, 2px, red)",
}
],
// tüm ölçeklerde geçerli
excludedEffect: "blur(8px) brightness(1.2) grayscale(0.8)"
};
}
});
});
})();
});
</script>
</head>
<body>
<div id="haritaBlogu"></div>
</body>
</html>
ArcGIS JavaScript API ile yazılmış diğer örnekleri incelemek için linke tıklayınız.
İleri düzey ArcGIS Developer eğitimleri,atölye çalışmaları ve yol gösterme hizmetleri için Esri Türkiye Profesyonel Hizmetler birimi ile irtibata geçiniz.
Esri Türkiye 2021