1

我有一个谷歌地图(使用API​​ V3),我需要为它设置标记聚类。基本上,标记位置通过JSON加载,并返回问题(1或2),纬度和经度。谷歌地图 - 聚类标记

我试图设置群集,但是即使JSON调用实际返回点,地图上也没有显示任何内容。这里是我想出了:

var map; 

function myMap(){ 
    var latlng = new google.maps.LatLng(35.94, 14.37); 

var mapOptions = { 
zoom: 10, 
center: latlng, 
panControl: false, 
mapTypeControl: false, 
mapTypeId: google.maps.MapTypeId.ROADMAP, 
scaleControl: false, 
streetViewControl: false, 
overviewMapControl: false, 
zoomControl: true}; 

map = new google.maps.Map(document.getElementById("map"), mapOptions); 
loadMarkers(); 
} 

function loadMarkers() {  

var mcOptions = {gridSize: 50, maxZoom: 15}; 
var issueSevereMarkers = []; 
var issueSlightMarkers = []; 

markerIssueHigh = new google.maps.MarkerImage("img/icn_issue_high.png", 
new google.maps.Size(10.0, 10.0), 
new google.maps.Point(0, 0), 
new google.maps.Point(5.0, 5.0) 
); 

markerIssueMedium = new google.maps.MarkerImage("img/icn_issue_medium.png", 
new google.maps.Size(10.0, 10.0), 
new google.maps.Point(0, 0), 
new google.maps.Point(5.0, 5.0) 
); 

var issuePoints = $.ajax({ 
    type: 'GET', 
    url: 'http://www.mydomain.com/php/markers.php?&jsoncallback=?', 
    dataType: 'JSONp', 
    timeout: 5000, 
    success: function(data) {   
     $.each(data, function(i,item){ 

     if (item.Issue == 1) { 
      // If severely congested     
       var latLng = new google.maps.LatLng(item.Latitude, item.Longitude); 
       var issueSevereMarker = new google.maps.Marker({'position': latLng}); 
       issueSevereMarkers.push(issueSevereMarker); 

     } else if (item.Issue == 2) { 
      // If slightly congested 
       var latLng = new google.maps.LatLng(item.Latitude, item.Longitude); 
       var issueSlightMarker = new google.maps.Marker({'position': latLng}); 
       issueSlightMarkers.push(issueSlightMarker); 
     } 

    }); 

    var markerClusterSevere = new MarkerClusterer(map, issueSevereMarkers); 
    var issueSlightMarkerCluster = new MarkerClusterer(map, issueSlightMarkers); 
    }, 
    error: function(data) { 

    } 
});  
} 

基本上我在做什么是JSON得到的结果,如果问题是1型的,我加一个引脚到issueSevereMarkers阵列,否则我将它添加到issueSlightMarkers数组。这应该使用标记的点加载数组。我不确定我在那里做错了什么。

另外我遇到的另一个问题是clusterer基本上返回一个自定义图标,我想当标记被分组时。当我放大并看到各个标记时,如何设置标记以使用markerIssueHigh和markerIssueMedium图像?

我现在用的是Clustere为V3(http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html)

回答

0

实际使用你需要你的自定义图标引用它们在google.maps.Marker构造

if (item.Issue == 1) { 
     // If severely congested     
      var latLng = new google.maps.LatLng(item.Latitude, item.Longitude); 
      var issueSevereMarker = new google.maps.Marker({position: latLng, 
                  icon:markerIssueHigh}); 
      issueSevereMarkers.push(issueSevereMarker); 

    } else if (item.Issue == 2) { 
     // If slightly congested 
      var latLng = new google.maps.LatLng(item.Latitude, item.Longitude); 
      var issueSlightMarker = new google.maps.Marker({position: latLng, 
                  icon:markerIssueMedium}); 

      issueSlightMarkers.push(issueSlightMarker); 
    } 

看不出有什么明显的,为什么没有这样看来,这里是一个link与聚类器(从XML而获取其数据的工作图比JSON)。

similar question向群集添加自定义标记。