【发布时间】:2012-01-19 09:11:10
【问题描述】:
我在显示 2 个不同的标记时遇到了一些问题,具体取决于缩放级别。例如,如果缩放级别小于 10,则显示图标 a,如果缩放级别大于 10,则显示图标 2。我一直在查看标记管理器,但有点迷路了。这是我的代码:
var url = "json.api";
function initialize() {
var myLatlng = new google.maps.LatLng(0, 0);
var myOptions = {
maxZoom: 16,
zoomControl: true,
disableDefaultUI: true,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
downloadUrl(url, function(data) {
var j = eval('(' + response + ')');
var jlength = j.data.hotels.length;
var bounds = new google.maps.LatLngBounds();
for(i=0; i < jlength; i++) {
var x = parseFloat(j.data.hotels[i].lat);
var y = parseFloat(j.data.hotels[i].lon);
var z = new google.maps.LatLng(x,y);
var title = j.data.hotels[i].title;
var hotel_id = j.data.hotels[i].id;
var address = j.data.hotels[i].address;
var star = j.data.hotels[i].star;
var thumbnail = j.data.hotels[i].thumbnail;
var contentstring = 'some html';
var marker = createMarker();
var infowindow = new google.maps.InfoWindow({
content: contentstring
});
bounds.extend(z);
map.fitBounds(bounds);
//NOT SURE IF THESE ARE NEEDED
// zoomChangeBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function(event) {
// google.maps.event.removeListener(zoomChangeBoundsListener);
// });
// google.maps.event.addListener(map, 'zoom_changed', function() {
// });
};
if (map.getZoom() == 21) {map.setZoom(16);}
if (map.getZoom() < 12) {map.setZoom(map.getZoom()+1);}
//alert(map.getZoom())
function createMarker(){
var marker = new google.maps.Marker({
position: z,
map: map,
title: title,
html: contentstring,
icon: 'icona.png'
});
google.maps.event.addListener(marker,'click',function(){
infowindow.setContent(this.html);
infowindow.open(map,marker);
});
};
});
};
如您所见,我有一个 json 文件,我循环获取 lat 和 lng(以及其他位),然后创建一个标记,显示我的 json 文件中的所有内容,并带有一个信息窗口等......我不能只需创建第二个标记函数,即 createMarker2 和一些如何调用,如果缩放大于 10?...任何帮助将不胜感激。我在网上查看了一些示例,但感到困惑。提前致谢。
【问题讨论】:
标签: javascript google-maps google-maps-api-3 google-maps-markers