在Openlayers v2我可以添加如下符号:
OpenLayers.Renderer.symbol.pointToIcon = [100, 70, 20, 50, 42, 70, 20, 90];
Run Code Online (Sandbox Code Playgroud)
我怎样才能使用Openlayers 3?
在openlayers 3我可以使用此功能:
var starSymbol = new ol.style.RegularShape({
points: 4,
opacity: .5,
radius: 10,
radius2: 10 * .5,
angle: 130,
fill: new ol.style.Fill({
color: "blue"
}),
stroke: new ol.style.Stroke({
color: "red",
width: 1
})
});
Run Code Online (Sandbox Code Playgroud)
我可以制作其他数字,但我不能制作下图.
另外,我不使用'Icon'之类的:
new ol.style.Style({
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({
anchor: [0.5, 46],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.75,
src: 'data/icon.png'
}))
})
Run Code Online (Sandbox Code Playgroud)
因为图标的颜色是固定的,我不能使用我需要的颜色.
如果你帮助我,我真的很感激.
我在我的程序中使用动态过滤器,如下面的解决方案:
public static IQueryable<T> MyFilter<T>(this IQueryable<T> queryable) where T : class ,IModel
{
var someIds = new int[]{1,2,3,4,5};
var userId = 2;
Expression<Func<T, bool>> predicate1 = e => someIds.Contains(e.Id);
Expression<Func<T, bool>> predicate2 = e => e.UserId==userId;
Expression<Func<T, bool>> predicate3 = e => e.CreatedDate != null;
var pred1 = Expression.Lambda<Func<T, bool>>(System.Linq.Expressions.Expression.Or(predicate1, predicate2));
var pred2 = Expression.Lambda<Func<T, bool>>(System.Linq.Expressions.Expression.Or(pred1, predicate3));
var result = queryable
.Where(pred2);
return result;
}
Run Code Online (Sandbox Code Playgroud)
这IModel是这样的:
Public interface IModel{
int Id { get; set; }
int UserId { …Run Code Online (Sandbox Code Playgroud) 如何在OpenLayers 3中使用谷歌地图?
我想迁移从的OpenLayers 2〜3.这里有一个例子:
谷歌与的OpenLayers例如地图的整合
,但使用这种方法需要改变旧的HTML代码(这两个元素的需求,"GMAP"和提到的例子"olmap").
ol3正式不支持谷歌地图,但我的问题是:
"如何在我的项目中使用谷歌地图平铺服务,如MapServer,无需为脚本标记添加谷歌API参考(用于优化目的)?"
这是我的旧代码,可以正常使用OpenLayers 2:
var map = new OpenLayers.Map("map_canvas", {
controls: [
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.OverviewMap()
],
units: "m",
numZoomLevels: 21
});
var gmap = new OpenLayers.Layer.Google(
{ type: google.maps.MapTypeId.ROADMAP, numZoomLevels: 21}
);
map.addLayers([gmap]);
Run Code Online (Sandbox Code Playgroud)
和HTML代码:
<div id="map_canvas">
</div>
Run Code Online (Sandbox Code Playgroud)
感谢任何帮助
gis ×2
javascript ×2
openlayers-3 ×2
c# ×1
expression ×1
google-maps ×1
linq ×1
maps ×1
mapserver ×1
openlayers ×1