Google maps 如何在谷歌地图上显示不同的标记
我有一个谷歌地图,显示多个标记,代码如下。 我想对其中一些进行分组,并有一个不同的图标,如果可能的话,我想设置如下Google maps 如何在谷歌地图上显示不同的标记,google-maps,Google Maps,我有一个谷歌地图,显示多个标记,代码如下。 我想对其中一些进行分组,并有一个不同的图标,如果可能的话,我想设置如下 ['Bondi Beach', -33.890542, 151.274856 type="restaurant"], ['Bondi RD', -33.89457, 151.26826 type="hotel"], 等,然后根据其类型显示不同的图标 var markers1 = [ ['Bondi Beach', -33.890542, 151.274856],
['Bondi Beach', -33.890542, 151.274856 type="restaurant"],
['Bondi RD', -33.89457, 151.26826 type="hotel"],
等,然后根据其类型显示不同的图标
var markers1 = [
['Bondi Beach', -33.890542, 151.274856],
['Bondi RD', -33.89457, 151.26826],
['Wellington St', -33.89136, 151.26474],
['Bondi RD', -33.89457, 151.26826],
['Belleve Hill', -33.88673, 151.25839],
['Belleve RD', -33.88424, 151.25427],
['Blair St', -33.88509, 151.27058],
['Wollahra', -33.88951, 151.24500],
['Double Bay', -33.87783, 151.23985],
['Kings Cross', -33.87498, 151.21788],
['Shaw St', -33.88110, 151.27088],
['Coogee Beach', -33.923036, 151.259052],
['Cronulla Beach', -34.028249, 151.157507],
['Manly Beach', -33.80010128657071, 151.28747820854187],
['West of sydney', -33.87270, 151.15746],
['Maroubra Beach', -33.950198, 151.259302]
];
function initializehotell() {
alert("init hotell");
var latlng = new google.maps.LatLng(-33.92, 151.25);
var myOptions = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false
};
var map1 = new google.maps.Map(document.getElementById("map_canvashotell"),myOptions);
image = new google.maps.MarkerImage("http://www.mydomain.com/images/googlemap/info.png",new google.maps.Size(32, 45));
shadowi = new google.maps.MarkerImage("http://www.mydomain.com/images/googlemap/shadow.png",new google.maps.Size(51, 37));
var infowindow = new google.maps.InfoWindow(), marker, i;
for (i = 0; i < markers1.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(markers1[i][1], markers1[i][2]),
map: map1,
shadow: shadowi,
icon: image
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(markers1[i][0]);
infowindow.open(map1, marker);
}
})(marker, i));
}
}
var标记1=[
[Bondi Beach',-33.890542151.274856],
[Bondi路-33.89457151.26826],
[惠灵顿街-33.89136151.26474],
[Bondi路-33.89457151.26826],
[Belleve Hill',33.88673151.25839],
[Belleve路-33.88424151.25427],
[Blair St',33.88509151.27058],
[Wollahra',-33.88951151.24500],
[Double Bay',-33.87783151.23985],
[Kings Cross',-33.87498151.21788],
[Shaw St',33.88110151.27088],
[Coogee Beach',-33.923036151.259052],
['Cronulla Beach',-34.028249151.157507],
[‘曼利海滩’,-33.80010128657071151.28747820854187],
[‘悉尼以西’,-33.87270,151.15746],
[‘马鲁布拉海滩’,-33.950198151.259302]
];
函数初始化hotell(){
警报(“初始酒店”);
var latlng=新的google.maps.latlng(-33.92151.25);
变量myOptions={
缩放:10,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:false
};
var map1=new google.maps.Map(document.getElementById(“Map_canvashotell”),myOptions);
image=新的google.maps.MarkerImage(“http://www.mydomain.com/images/googlemap/info.png,新的google.maps.Size(32,45));
shadowi=新的google.maps.MarkerImage(“http://www.mydomain.com/images/googlemap/shadow.png,新的google.maps.Size(51,37));
var infowindow=new google.maps.infowindow(),marker,i;
对于(i=0;i
我想我必须改变它在循环中的位置:新的google.maps.LatLng(markers1[I][1],markers1[I][2]),但我不确定如何改变。
因此,非常感谢您的任何意见,谢谢
typeObject = {
"hotel" : {
"icon" : "HERE_IS_YOUR_ICON",
"shadow" : "HERE_IS_YOUR_SHADOW",
"icon_size" : [32, 52],
"shadow_size" : [62, 72]
},
// continue for every type
}
现在有了一个JSON对象,其中的元素本身就是JSON对象。你稍微改变一下你的数组下面的例子
['Bondi Beach', -33.890542, 151.274856, "hotel"]
所以当你创建一个标记时
var icon = typeObjcet[markers1[i][3]]['icon'];
var shadow = typeObjcet[markers1[i][3]]['shadow'];
var iconSize = typeObjcet[markers1[i][3]]['icon_size'];
var shadowSize = typeObjcet[markers1[i][3]]['shadow_size'];
marker = new google.maps.Marker({
position: new google.maps.LatLng(markers1[i][1], markers1[i][2]),
map: map1,
icon: new google.maps.MarkerImage(icon, new google.maps.Size(iconSize[0], iconSize[1])),
shadow: new google.maps.MarkerImage(shadow, new google.maps.Size(shadowSize[0], shadowSize[1]))
});
我想它可以被修饰,但这是一个动态类型的粗略示例。您只需在typeObject上为所需的每个类型填充数据,并通过初始数组中的type属性访问它
更新
当然可能是这样
typeObject = {
"hotel" : {
"icon" : new google.maps.MarkerImage("red.png", new google.maps.Size(32, 42)),
"shadow" : new google.maps.MarkerImage("shadow.png", new google.maps.Size(58, 68))
},
// continue for every type
}
var icon = typeObject[markers1[i][3]]['icon'];
var shadow = typeObject[markers1[i][3]]['shadow'];
marker = new google.maps.Marker({
position: new google.maps.LatLng(markers1[i][1], markers1[i][2]),
map: map1,
icon: icon,
shadow: shadow
});
我可以回答如何构造包含正确信息的json对象。但是除了图像,你还想保存什么呢?大小,shadow?如果我理解正确,您需要将您放入MarkerImage中的信息保存在json对象中,并按类型访问该信息(这将是您访问详细信息的密钥)alkis,谢谢。我需要大小和阴影,我想这就是我所需要的。例如:如果我设置type=“restaurant”,那么我想显示red.png,如果它是a type=“hotel”,那么我想显示gren.png等等,以获得更多类型。感谢的可能重复,我尝试了:bar=new google.maps.MarkerImage(../images/icons/bar.png),new google.maps.size(32,32)); 然后['Bondi Beach',33.890542,151.274856,bar],这个:icon:markers1[i][3],但它不起作用。为什么我不能在数组中设置变量栏?如果我设置:['Bondi Beach',-33.890542151.274856,…images/icons/bar.png'],那么它可以工作,但我不知道如何设置图标的大小?我必须测试你的密码。谢谢。你的第一个评论是错误的。我使用typeObject是有原因的。如果你想根据我的建议做其他事情,那么更新你的问题,这样我就可以看到你想要什么。除非你确定自己在做什么,否则不要拿我的例子举例。如果你不这样做,那就直截了当地说,完全按照我所说的去做。我使用typeObject实现可伸缩性。您可以将大小放入初始数组中,图标和阴影也可以。但是,假设你有两个地方的类型是hotel,你必须在这两个地方放置相同的数据(图标、阴影等)。这样,你把你想要的所有数据都放在typeObject中,然后根据你在初始数组中的类型找到它们。我的意思是,在你发布你的示例之前,我已经测试过了,明天我会测试它。