Javascript 更改google maps api 3中不同map.data.loadGeoJson数据集的标记
我有两个不同的geojson数据集,我希望数据集的一个标记设置为一个自定义图标,另一个数据集设置为另一个自定义图标 我该怎么做呢 这是到目前为止我的代码Javascript 更改google maps api 3中不同map.data.loadGeoJson数据集的标记,javascript,google-maps,geojson,Javascript,Google Maps,Geojson,我有两个不同的geojson数据集,我希望数据集的一个标记设置为一个自定义图标,另一个数据集设置为另一个自定义图标 我该怎么做呢 这是到目前为止我的代码 var map; var infowindow = new google.maps.InfoWindow(); function initialize() { // Create a simple map. map = new google.maps.Map(document.getElementById('map2'), {
var map;
var infowindow = new google.maps.InfoWindow();
function initialize() {
// Create a simple map.
map = new google.maps.Map(document.getElementById('map2'), {
zoom: 6,
center: {lat: 53.939480, lng: -116.847401},
mapTypeControlOptions: {
mapTypeIds: ['roadmap', 'satellite', 'hybrid', 'terrain',
'styled_map']
}
});
map.mapTypes.set('styled_map', styledMapType);
map.setMapTypeId('styled_map'); //geo json
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});
// Load the associated GeoJSON
var url = 'https://north-river.s3.us-east-2.amazonaws.com/Active.geojson';
var url2 ='https://north-river.s3.us-east-2.amazonaws.com/Pipelines.geojson'
map.data.loadGeoJson(url);
map.data.loadGeoJson(url2);
// Set event listener for each feature.
map.data.addListener('click', function(event) {
infowindow.setContent(
"<table>"+
"<tbody>"+"<th>Name:</th>" + "<td>" + event.feature.getProperty('Name') + "</td>" + "</tbody>" +
"<tbody>"+"<th>Status:</th>" + "<td>" + event.feature.getProperty('Status') + "</td>" + "</tbody>" +
"<tbody>"+"<th>Lat_DMS:</th>" + "<td>" + event.feature.getProperty('Lat_DMS') + "</td>" + "</tbody>"
);
infowindow.setPosition(event.latLng);
infowindow.setOptions({pixelOffset: new google.maps.Size(0,-34)});
infowindow.open(map);
});
}
google.maps.event.addDomListener(window, 'load', initialize);
var映射;
var infowindow=new google.maps.infowindow();
函数初始化(){
//创建一个简单的地图。
map=new google.maps.map(document.getElementById('map2'){
缩放:6,
中心:{lat:53.939480,lng:-116.847401},
mapTypeControlOptions:{
MapTypeId:[“路线图”、“卫星”、“混合”、“地形”,
“样式化地图”]
}
});
map.mapTypes.set('styled_map',styledMapType);
setMapTypeId('styled_map');//地理json
google.maps.event.addListener(映射,'click',函数(){
infowindow.close();
});
//加载关联的GeoJSON
var url='1〕https://north-river.s3.us-east-2.amazonaws.com/Active.geojson';
var url2=https://north-river.s3.us-east-2.amazonaws.com/Pipelines.geojson'
map.data.loadGeoJson(url);
map.data.loadGeoJson(url2);
//为每个功能设置事件侦听器。
map.data.addListener('click',函数(事件){
infowindow.setContent(
""+
“+”名称:“+”+事件。功能。getProperty('Name')+“”+
“+”状态:“+”+事件.feature.getProperty('Status')+“+”+
“+”Lat\U DMS:“+”+事件.feature.getProperty('Lat\U DMS')+”+“”
);
infowindow.setPosition(event.latLng);
setOptions({pixelcoffset:newgoogle.maps.Size(0,-34)});
打开(地图);
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);
为每个文件使用单独的图层,每个图层都具有相应的样式功能:
// Load the associated GeoJSON
var url = 'https://north-river.s3.us-east-2.amazonaws.com/Active.geojson';
var url2 = 'https://north-river.s3.us-east-2.amazonaws.com/Pipelines.geojson'
var layer1 = new google.maps.Data();
layer1.loadGeoJson(url);
layer1.setStyle(function(feature) {
return /** @type {!google.maps.Data.StyleOptions} */({
icon: "http://maps.google.com/mapfiles/ms/micons/blue.png"});
});
layer1.setMap(map);
var layer2 = new google.maps.Data();
layer2.loadGeoJson(url2);
layer2.setStyle(function(feature) {
return /** @type {!google.maps.Data.StyleOptions} */({
icon: "http://maps.google.com/mapfiles/ms/micons/green.png"});
});
layer2.setMap(map);
var映射;
var infowindow=new google.maps.infowindow();
函数初始化(){
//创建一个简单的地图。
map=new google.maps.map(document.getElementById('map2'){
缩放:6,
中心:{
拉脱维亚:57.64206,
液化天然气:-122.494374
},
mapTypeControlOptions:{
MapTypeId:[“路线图”、“卫星”、“混合”、“地形”,
“样式化地图”
]
}
});
google.maps.event.addListener(map'center_changed',function(){
log(map.getCenter().toUrlValue(6));
});
//map.mapTypes.set('styled_map',styledMapType);
//setMapTypeId('styled_map');//地理json
google.maps.event.addListener(映射,'click',函数(){
infowindow.close();
});
//加载关联的GeoJSON
var url='1〕https://north-river.s3.us-east-2.amazonaws.com/Active.geojson';
var url2=https://north-river.s3.us-east-2.amazonaws.com/Pipelines.geojson'
var layer1=新的google.maps.Data();
layer1.loadGeoJson(url);
第1层设置样式(功能(特性){
return/**@type{!google.maps.Data.StyleOptions}*/({
图标:“http://maps.google.com/mapfiles/ms/micons/blue.png"
});
});
第1层:设置地图(地图);
var layer2=新的google.maps.Data();
layer2.loadGeoJson(url2);
第2层设置样式(功能(特性){
return/**@type{!google.maps.Data.StyleOptions}*/({
图标:“http://maps.google.com/mapfiles/ms/micons/green.png"
});
});
第2层。设置地图(地图);
//为每个功能设置事件侦听器。
函数handleclick(事件){
infowindow.setContent(
"" +
“+”名称:“+”+事件。功能。getProperty('Name')+“”+
“+”状态:“+”+事件.feature.getProperty('Status')+“+”+
“+”Lat\U DMS:“+”+事件.feature.getProperty('Lat\U DMS')+”+“”
);
infowindow.setPosition(event.latLng);
infowindow.setOptions({
pixelOffset:new google.maps.Size(0,-34)
});
打开(地图);
}
layer1.addListener('click',handleClicks);
layer2.addListener('click',handleClicks);
}
google.maps.event.addDomListener(窗口“加载”,初始化)代码>
/*始终明确设置贴图高度以定义div的大小
*包含映射的元素*/
#map2{
身高:100%;
}
/*可选:使示例页面填充窗口*/
html,
身体{
身高:100%;
保证金:0;
填充:0;
}
这似乎可行,但不确定哪一个是更好的解决方案,但是使用此解决方案,我的信息窗口点击处理程序仍然有效
map.data.setStyle(function(feature) {
var marker = feature.getProperty('Status');
var markerCheck = marker === 'Active' ? 'https://cdn.mapmarker.io/api/v1/font-awesome/v5/pin?text=P&size=40&background=D94B43&color=FFF&hoffset=-1' : 'https://cdn.mapmarker.io/api/v1/font-awesome/v5/icon?icon=fa-star-solid&size=50&color=DC4C3F';
var colorCheck = marker === 'Active' ? "#0000FF" : "#000000";
return {
icon: markerCheck,
strokeColor: colorCheck
};
});