我使用以下代码将功能添加到OpenLayers 3(OL3)中的矢量图层:
marker = new ol.Feature({
geometry: new ol.geom.Point([longitude, latitude]),
name: "Location Marker"
});
markerStyle = new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 1.0],
anchorXUnits: "fraction",
anchorYUnits: "fraction",
src: "Content/Images/OpenLayers/marker_trans.png"
}),
zIndex: 100000
});
marker.setStyle(markerStyle);
marker.on("click", function(e) {
// do something
}, marker);
map.getSource().addFeature(marker);
Run Code Online (Sandbox Code Playgroud)
标记按预期显示,但click事件永远不会触发.我究竟做错了什么?
我应该注意到,在地图级别已经存在与"click"关联的处理程序,即
map.on("click", function(e) {
// do something
}, marker);
Run Code Online (Sandbox Code Playgroud) 我有一个智能网格系统,其中多个硬件设备将原始传感器数据发送到Azure队列.每个设备每分钟发送一个数据包.多个工作者角色处理队列上的数据包并将数据推送到表存储.我有一个Web角色,其中包含用户查看其设备数据的应用程序以及与其智能能源系统相关的大量其他警报和消息.目前,Web应用程序仅以一分钟的间隔使用ajax轮询来获取最新的数据更新以及任何其他消息和警报.我不想使用ajax"pull",而是使用SignalR代替并在云端可用时"推送"云端的更新.我不确定整体架构的外观.
到目前为止,我已经在我的Web角色中添加了一个SignalR Hub,只是为了看看我是否可以这样做.它工作正常.但是,如果表存储发生更改,如何从此Hub触发更新?我应该使用处理原始数据的工作者角色来托管集线器,然后从Web应用程序(客户端)建立跨域SignalR连接吗?我甚至可以将端点与工作者角色相关联吗?如果我有很多工作者角色,我不能只连接到其中一个,因此错过了其他工作者角色的数据更新?
也许我应该创建一个单独的Web角色来托管SignalR集线器,但是如何将处理原始数据的工作者角色的更改传达给集线器?也许我需要包含另一个Azure Queue,它接收来自Worker Roles的有关数据更新,警报和任何其他消息的消息,并且该队列由SignalR服务器处理.但是,这种方法可以扩展吗?如果我有多个SignalR服务器实例处理消息队列,它们是否会共享相同的端点并且知道实例之间的所有客户端连接?或者,工作者角色本身可以作为客户端连接到SignalR服务器,并将消息从那里转发到客户端.
如果以每分钟一次的可预测速率生成数据,SignalR甚至是正确的方法.也许对于这个常规数据的更新,ajax'pull'是最好的方法,我应该只使用SignalR来处理不常见的警报和消息,但是,我如何将这些事件从Worker Roles传递到SignalR服务器?
什么整体架构适合我的需求?
编辑06-09-2014一半问题解决了
我遇到了http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-with-windows-azure-service-bus这似乎正是我所追求的.这涉及多个Hub服务器(Web角色)实例的问题.现在我只需要一个可以在Worker Roles上运行的SignalR客户端库,以便他们可以通知Hub新数据可用,然后可以增强Hub类以将新数据路由到适当的连接Web客户端.
编辑06-10-2014找到了可行的解决方案
我已经在我的"什么架构"问题上添加了一个答案.我想我的设置的快速摘要可能会有用.我有许多与不同用户关联的远程设备向Azure队列发布实时数据.发布到这些队列的数据将被许多工作者角色解析并保存到表存储中.Web角色为用户(客户端)提供MVC5 Web应用程序以登录和查看其数据.我想要一种机制,通过该机制,当发布新数据时,任何连接的客户端都将收到实时通知(并且客户端应用程序中的数据表和图表可以相应地更新).事实证明,带有服务总线扩展的SignalR就是答案.
我正在为iPhone(iOS 6)的位置应用程序工作,该应用程序不断向Web服务发送准确的位置信息.我进行了设置,以便应用程序每分钟发送一个位置数据包(只要位置发生重大变化).应用程序的这一部分运行良好(作为后台任务),但正如您可能预期的那样它会影响电池寿命,因为它始终显着地使用GPS(我花了大约6个小时,这已经不算太糟了,因为我已经习惯了堵塞在我的手机里和在家里,所以我可以度过这一天好,但我需要延长至少16个小时才能实用).
我想要做的是当手机指示它暂时没有显着移动时关闭GPS.使用GPS数据本身是微不足道的.但是,关闭GPS后,我可以使用什么作为触发器重新打开它,并重新开始位置发布?我可以在感觉到5分钟没有产生新位置时将其关闭,然后在X分钟后检查位置以查看它是否已经改变,并采取相应措施.或者也许我可以用一些聪明的方式使用加速度计,或者其他一些传感器来触发再次打开GPS.
鉴于旅行时间通常只占一天的一小部分,因此在家中或办公室时最小化GPS活动是有意义的......但如何可靠地进行?
我有一个 .Net Core 3.0 控制台项目,其中包含 WebJob 函数,该函数具有与 Azure Signal R 的输出绑定。该应用程序构建正常,但是当我运行它并尝试通过 SignalR 发送消息时,出现以下错误:
{System.MissingMethodException: Method not found: 'System.String Microsoft.Azure.SignalR.AuthenticationHelper.GenerateAccessToken(System.String, System.String, System.Collections.Generic.IEnumerable`1<System.Security.Claims.Claim>, System.TimeSpan, System.String)'.
at Microsoft.Azure.SignalR.Management.RestApiAccessTokenGenerator.Generate(String audience, Nullable`1 lifetime)
at Microsoft.Azure.SignalR.Management.RestApiProvider.GenerateRestApiEndpoint(String path, Nullable`1 lifetime)
at Microsoft.Azure.SignalR.Management.RestApiProvider.GetSendToGroupEndpoint(String groupName, Nullable`1 lifetime)
at Microsoft.Azure.SignalR.Management.RestHubLifetimeManager.SendGroupAsync(String groupName, String methodName, Object[] args, CancellationToken cancellationToken)
at Microsoft.AspNetCore.SignalR.Internal.GroupProxy`1.SendCoreAsync(String method, Object[] args, CancellationToken cancellationToken)
at Microsoft.Azure.WebJobs.Extensions.SignalRService.AzureSignalRClient.SendToGroup(String groupName, SignalRData data)
at Microsoft.Azure.WebJobs.Extensions.SignalRService.SignalRAsyncCollector`1.AddAsync(T item, CancellationToken cancellationToken)
at InSysWebJobP300DataProcessor.Helper.ProcessMinuteData(Message message, ConnectionMultiplexer redisConnection, IAsyncCollector`1 signalRMessages, ILogger log) in E:\InergySystems\GitHub\InSysCore\InSysWebJobP300DataProcessor\Helper.cs:line 125}
Run Code Online (Sandbox Code Playgroud)
SignalR 服务在 Program.Main 中注册为: …
我正在尝试在Visual Studio 2015中构建Service Fabric项目。我有一项名为Weather的服务。当我尝试运行项目时,得到以下输出:
2>Started executing script 'Deploy-FabricApplication.ps1'.
2>. 'D:\InergySystems\GitHub\InSysServiceFabric\InSysServiceFabric\Scripts\Deploy-FabricApplication.ps1' -ApplicationPackagePath 'D:\InergySystems\GitHub\InSysServiceFabric\InSysServiceFabric\pkg\Debug' -PublishProfileFile 'D:\InergySystems\GitHub\InSysServiceFabric\InSysServiceFabric\PublishProfiles\Local.xml' -DeployOnly:$true -UnregisterUnusedApplicationVersionsAfterUpgrade $false -OverrideUpgradeBehavior 'None' -OverwriteBehavior 'Always' -SkipPackageValidation:$true -ErrorAction Stop
2>Copying application to image store...
2>Copy application package succeeded
2>Registering application type...
2>Register-ServiceFabricApplicationType : Parameter with the name 'Weather_InstanceCount' is found more than once.
2>Duplicate parameters are not allowed.
2>FileName: C:\SfDevCluster\Data\ImageBuilderProxy\AppType\InSysServiceFabricType\ApplicationManifest.xml
2>At C:\Program Files\Microsoft SDKs\Service
2>Fabric\Tools\PSModule\ServiceFabricSDK\Publish-NewServiceFabricApplication.ps1:237 char:9
2>+ Register-ServiceFabricApplicationType -ApplicationPathInImage ...
2>+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2> + CategoryInfo : InvalidOperation: (Microsoft.Servi...usterConnection:ClusterConnection) [Register-Servic
2> eFabricApplicationType], FabricException
2> + FullyQualifiedErrorId …
Run Code Online (Sandbox Code Playgroud) 我在Visual Studio 15.8.6中有一个Azure Functions(v2)项目,该项目安装了Azure Functions和Web Job Tools 5.2.60618.0.我正在使用ServiceBusTrigger.当我尝试编译项目时,我继续得到:
严重级代码描述项目文件行抑制状态错误System.IO.FileNotFoundException:无法加载文件或程序集"Microsoft.Azure.WebJobs,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = null"或其依赖项之一.该系统找不到指定的文件.文件名:System.ModuleHandle.ResolveType上的'Microsoft.Azure.WebJobs,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = null'(RuntimeModule模块,Int32 typeToken,IntPtr*typeInstArgs,Int32 typeInstCount,IntPtr*methodInstArgs,Int32 methodInstCount System.FoduleHandle.ResolveTypeHandleInternal(RuntimeModule模块,Int32 typeToken,RuntimeTypeHandle [] typeInstantiationContext,RuntimeTypeHandle [] methodInstantiationContext),System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken,Type [] genericTypeArguments,Type [] genericMethodArguments)at,SystemHandleOnStack type) System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord,MetadataImport scope,Assembly&lastAptcaOkAssembly,RuntimeModule decoratedModule,MetadataToken decoratedToken,RuntimeType attributeFilterType,Boolean mustBeInheritable,Object [] attributes,IList derivedAttributes,RuntimeType&attributeType,IRuntimeMethodInfo&ctor,Boolean&ctorHasParameters,Boolean&isVarArg)处System.Reflection.CustomAttribute.GetCustomAttributes System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule,的Int32 decoratedMetadataToken,的Int32 pcaCount,RuntimeType attributeFilterType,布尔mustBeInheritable,IList的derivedAttributes,布尔isDecoratedTargetSecurityTransparent)(在系统RuntimeParameterInfo参数,RuntimeType caType). System.Linq.Enumerable.WhereSelectArrayIterator的
2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator
MakeFunctionJson.ParameterInfoExtensions.GetDisabledAttribute(ParameterInfo parameterInfo)中的Attribute.InternalParamGetCustomAttributes(ParameterInfo param,Type type,Boolean inherit)System.Linq.Enumerable.FirstOrDefault [TSource]中的1.MoveNext()(IEnumerable1 source) at MakeFunctionJson.MethodInfoExtensions.GetDisabled(MethodInfo method) at MakeFunctionJson.MethodInfoExtensions.HasUnsuportedAttributes(MethodInfo method, String& error) at MakeFunctionJson.FunctionJsonConverter.<GenerateFunctions>d__9.MoveNext() at System.Collections.Generic.List
1)1 collection) at …
azure ×2
asp.net-mvc ×1
c# ×1
geolocation ×1
gps ×1
ios ×1
iphone ×1
javascript ×1
openlayers ×1
openlayers-3 ×1
signalr ×1