gpt4 book ai didi

javascript - 在 Google map 中按类型显示自定义图像标记图标。

转载 作者:行者123 更新时间:2023-11-29 22:10:09 24 4
gpt4 key购买 nike

我修改了 Google Maps API V3 复杂图标示例 https://developers.google.com/maps/documentation/javascript/examples/icon-complex从数组中提取数据并在每个标记位置显示自定义信息窗口内容和标题。我还想根据单个项目显示特定的自定义图像图标“位置”数组中的描述具有不同的“打开”、“关闭”、“公共(public)”或“完整”图像图标。

如何在创建新标记时正确创建循环遍历数组的图像变量,并以与标题和信息窗口相同的方式从“位置”数组中提取特定数据文本?

完整的 HTML 和 Javascript。

<script
src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=weather">
</script>

<script type="text/javascript">



var locations =
[

['Coogee Beach', -33.923036, 151.259052, 5, 20, "Closed",],
['Cronulla Beach', -34.028249, 151.157507, 3, 50 ,"Full",],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2, 10, "Public",],
['Maroubra Beach', -33.950198, 151.259302, 1, 30, "Open",]
];

//json array

function initialize() {

var myOptions = {
center: new google.maps.LatLng(33.890542, 151.274856),
zoom: 8,


panControl:false,
zoomControl:false,
mapTypeControl:true,
scaleControl:false,
streetViewControl:false,
overviewMapControl:false,
rotateControl:false,
mapTypeControlOptions: {
style:google.maps.MapTypeControlStyle.DROPDOWN_MENU,
position:google.maps.ControlPosition.BOTTOM_LEFT
},
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map = new google.maps.Map(document.getElementById("default"),
myOptions);

setMarkers(map, locations)

function setMarkers(map,locations){

//给 map 添加标记

//标记大小表示为 X,Y 的大小 //图像原点(0,0)所在位置 //在图像的左上角。

//标记的起点、 anchor 位置和坐标 //在 X 方向向右增加 //Y 方向向下。

 var weatherLayer = new google.maps.weather.WeatherLayer({
temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT

});
weatherLayer.setMap(map);

var cloudLayer = new google.maps.weather.CloudLayer();
cloudLayer.setMap(map);





var image = new google.maps.MarkerImage('images/beachflag.png',
// This marker is 32 pixels wide by 37 pixels tall.
new google.maps.Size(32, 37),
// The origin for this image is 0,0.
new google.maps.Point(0,0),
// The anchor for this image is the base of the flagpole at 0,37.
new google.maps.Point(0, 37));

var shadow = new google.maps.MarkerImage('images/shadow-beachflag.png',
// The shadow image is larger in the horizontal dimension
// while the position and offset are the same as for the main image.
new google.maps.Size(51,37),
new google.maps.Point(0,0),
new google.maps.Point(0, 37));
// Shapes define the clickable region of the icon.
// The type defines an HTML <area> element 'poly' which
// traces out a polygon as a series of X,Y points. The final
// coordinate closes the poly by connecting to the first
//var icon = typeObject[markers1[i][3]]['icon'];
// coordinate.
var shape = {
coord: [1, 1, 1, 20, 18, 20, 18 , 1],
type: 'poly'//
};




var marker, i

for (i = 0; i < locations.length; i++)
{

var project = locations[i][0]
var lat = locations[i][1]
var long = locations[i][2]
var add = locations[i][3]
var complete = locations[i][4]
var percentage = locations[i][4]


latlngset = new google.maps.LatLng(lat, long);

var marker = new google.maps.Marker({
map: map,
title: project , position: latlngset, icon: image, shadow: shadow,

});
map.setCenter(marker.getPosition())


var content =
'<div id="content">'+
'<h1 id="firstHeading" </h1>'+
project +

'</h1>' +
" # of Life Guards: " +
add +
'</h3>' +
" | Percentage: "
+ complete;
//infobox content

var infowindow = new google.maps.InfoWindow()
maxwidth:800,
google.maps.event.addListener(marker,'click',

(function(marker,content,infowindow){
return function() {
infowindow.setContent(content);
infowindow.open(map,marker);

};

})(marker,content,infowindow));

}
}

最佳答案

如果您只有 4 条描述,一种解决方案是使用与您的描述同名的图像图标:

Open.png、Closed.png、Public.png、Full.png(全部在文件夹“images/”中)

然后,你可以简单地做:

var description = locations[i][5];
var iconname = 'images/' + description + '.png';

var marker = new google.maps.Marker({
map: map,
title: project,
position: latlngset,
icon: iconname,
shadow: shadow
});

或者,如果您想继续使用 google.maps.MarkerImage:

var description = locations[i][5];
var iconname = 'images/' + description + '.png';

var image = new google.maps.MarkerImage(iconname,
// This marker is 32 pixels wide by 37 pixels tall.
new google.maps.Size(32, 37),
// The origin for this image is 0,0.
new google.maps.Point(0,0),
// The anchor for this image is the base of the flagpole at 0,37.
new google.maps.Point(0, 37));

etc...

如果你想为你的图标添加阴影,你可以采用类似的方法。

关于javascript - 在 Google map 中按类型显示自定义图像标记图标。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18525616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com