2013-03-27 68 views
0

我将要开发一个谷歌地图应用程序,其中标记将从表中填入以下结构(简化):改变谷歌地图的一个子集的颜色标记

marker_id (INT) 
label (TEXT) 
latitude (FLOAT) 
longitude (FLOAT) 
creation_date (DATE/TIME) 

的信息可能存储在Fusion表(首选)或MySQL中。 所有标记将以红色显示在地图上。 在地图旁边会有日期选择器组件,并且我希望所有标记的creation_date在所选日期的颜色改变为某种其他颜色(例如黄色)。 有没有什么办法可以做到这一点,而不必在客户端创建所有的标记,并保存对它们的引用? 可能有很多标记(超过10K,可能高达100K),所以我不确定这在客户端会如何工作(这就是为什么我更喜欢融合表层)。

回答

1

这可以通过GMaps API通过FT层完成。基础知识请参见API Docs

styles: [{ 
    where: "creation_date = '4/1/2013' ", 
    markerOptions: { 
     iconName: "small_yellow" 
    } 
    }, 
    { // default style 
    markerOptions: { 
    iconName: "small_red" 
    } ] 

有这么多标记FT是要走的路。

0

编辑:没有看到你想避免在客户端引用。据我所知它不可能在不创建标记以显示谷歌地图上的标记......也许,如果你遇到的可扩展性的问题,你可以想出办法在一次显示更少的标记


设置或更改图标根据需要手动:

var redIcon = { 
    url:'/icons/redIcon.png', 
}; 

var yellowIcon = { 
    url:'/icons/yellowIcon.png', 
}; 

// Populate some data structure to associate pins with data 
var dataPlusMarkers = [ 
{ data: 99, pin: new google.maps.Marker(...) }, 
{ data: 200, pin: new google.maps.Marker(...) } 
]; 

function setColors(){ 
    dataPlusMarkers.forEach(function(one){ 
    if(one.data > 100){ 
     one.pin.setIcon(yellowIcon); 
    } else { 
     one.pin.setIcon(redIcon); 
    } 
    }); 
};