0
在我的應用程序中,我將GeoJSON文件加載到Google地圖中。該文件正確加載沒有問題,但我希望應用其他樣式,這是多段線對象本地的而不是Feature對象。我想要做的是將線串設計爲包含多個圖標和一條虛線。我已經閱讀了關於GeoJSON和虛線的post,它可以工作,但我不希望多段線是單個實體;我想要渲染的多段線位於一個對象(數據層)中。我正在努力實現的是什麼?有沒有可用的解決方法?將折線添加到Google Maps數據層
**更新**
我用從geocodezip代碼並修改爲工廠工作,具有兩種類型:標記和折線。
function LayerFactory() {
this.entities = [];
this.labelLayerName = "";
}
LayerFactory.prototype.layerType = PolylineLayer;
LayerFactory.prototype = new google.maps.MVCObject();
LayerFactory.prototype.changed = function (key) {
if (this.entities) {
for (var i = 0; i < this.entities.length; i++) {
this.entities[i].overlay.set(key, this.get(key));
}
}
};
LayerFactory.prototype.addEntity = function (entity) {
this.entities.push(entity);
if (this.layerType === PolylineLayer) {
for (var i = 0; i < entity.overlays.length; i++) {
var overlay = entity.overlays[i];
//add events here
}
}
else if (this.layerType === MarkerLayer) {
//add events here
}
};
LayerFactory.prototype.setMap = function (map) { this.set('map', map); };
LayerFactory.prototype.getMap = function() { return this.get('map'); };
LayerFactory.prototype.createLayer = function (options) {
this.labelLayerName = options.labelLayerName;
switch (options.layerType) {
case "polyline":
//set options
break;
case "marker":
//set options
break;
case "label":
//set options
break;
}
return new this.layerType(options);
};
初始化圖層時,我包含標籤的圖層名稱,以便根據可見性單獨切換每個圖層。
myLayer = new LayerFactory();
myLayer.createLayer({ map: gmap, layerType: "marker", labelLayerName: "MyLabels" });
現在,切換層的時候,我只是拉所需要的層,並設置地圖爲null/GMAP:
yourMapLayer.setMap(/* gmap OR null => show/hide */);
我希望這有助於人誰經歷過,我遇到的問題。祝你好運。
經過進一步調查,多面體對象只是將多義線分組?我希望將它們作爲單個實體,但在一個容器內。基本上,我需要與數據層相同的行爲,但使用折線而不是要素。 – kryptonkal
geocodezip,我能夠使用基類MVCObject並以與MultiGeometry對象類似的方式使用它,但是有單獨的多段線嗎? – kryptonkal
我不確定這是什麼意思。如果您要發佈一個表明您的問題的[最小,完整,測試和可讀示例](http://stackoverflow.com/help/mcve),我可能會將其應用於您的代碼。 – geocodezip