保持矩阵中对角线的最大值(Keeping maximum values on diagonals in matrix)
假设我有一个表示高程值的矩阵A:
A = matrix(c(100,105,106,109,101,101,106,104,107,106,101,102,105,106,108,102,102,104,110,104), nrow=5, ncol=4)
我想创建一个新的矩阵,创建出A矩阵的对角线分析。 从前开始 左上角我想分析每个对角线并逐步保持最大值。 预期结果应如下:
B = matrix(c(100,105,106,109,101,101,106,105,107,109,101,102,106,106,108,102,102,102,110,106), nrow=5, ncol=4)
有人可以帮我吗?
Let's say I have a matrix A which represents elevation values:
A = matrix(c(100,105,106,109,101,101,106,104,107,106,101,102,105,106,108,102,102,104,110,104), nrow=5, ncol=4)
I would like to create a new matrix created out diagonal analysis of the A matrix. Starting in ex. the upper-left corner I want to analyse each diagonal and keeping the maximum values step by step. The expected results should be as following:
B = matrix(c(100,105,106,109,101,101,106,105,107,109,101,102,106,106,108,102,102,102,110,106), nrow=5, ncol=4)
Does anyone could help me with that?
原文:https://stackoverflow.com/questions/44259448
最满意答案
MarkerMangager显示的标记不是您创建的标记(并作为参数提供给
mgr.addMarker()
),MarkerManager创建新实例,当您删除存储在markersArray
的标记时,这些实例不会被删除(什么不是有任何视觉效果,因为markersArray中存储的标记不可见)您可以在
deleteOverlays()
调用mgr.clearMarkers()
来删除MarkerManager创建的实例,但不需要使用markersArray
的完整方法。 你根本不需要这个数组,只需调用mgr.clearMarkers()
来删除可见的标记。The markers displayed by the MarkerMangager are not the markers you create (and supply as argument to
mgr.addMarker()
), the MarkerManager creates new Instances and these Instances will not be deleted when you delete the Markers stored inmarkersArray
(what doesn't have any visual effect, because the markers stored in markersArray are not visible)You may call
mgr.clearMarkers()
indeleteOverlays()
to delete also the Instances created by the MarkerManager, but the complete approach with themarkersArray
is unnecessary. You don't need this array at all, simply callmgr.clearMarkers()
to remove the visible Markers.
相关问答
更多-
clickable sidebar markerclusterer google map api v.3(clickable sidebar markerclusterer google map api v.3)[2022-01-12]
在设置所有侧栏条目以使用它之后,您正在清除标记数组: showAll(); document.getElementById("side_bar").innerHTML = side_bar_html; markers=[]; 不要那样做。 工作小提琴 代码段: var hk_markers = [{ 'id': 1, 'name': 'Sanrio Puroland(サンリオピューロランド)', 'location': 'Tokyo, Japan', ... -
只需执行以下操作: I.声明一个全局变量: var markersArray = []; II。 定义一个函数: function clearOverlays() { for (var i = 0; i < markersArray.length; i++ ) { markersArray[i].setMap(null); } } 要么 google.maps.Map.prototype.clearOverlays = function() { for (var i = 0; i < ...
-
Google Maps API v3向每个标记添加一个InfoWindow(Google Maps API v3 adding an InfoWindow to each marker)[2022-08-10]
你在for in循环中有一个很常见的闭包问题 : 封闭在闭包中的变量共享相同的单一环境,所以在调用addListener的click回调时,循环将运行它的过程,并且info变量将被指向最后一个对象,这恰好是最后一个对象InfoWindow创建。 在这种情况下,解决这个问题的一个简单方法是使用InfoWindow来增加你的Marker对象: var marker = new google.maps.Marker({map: map, position: point, clickable: true}); m ... -
首先你必须添加eventlistener google.maps.event.addListener(map, 'click', find_closest_marker); 然后创建一个循环遍历标记数组的函数,并使用半径方程来计算每个标记距离点的距离。 function rad(x) {return x*Math.PI/180;} function find_closest_marker( event ) { var lat = event.latLng.lat(); var lng = ...
-
在您的测试用例中,所有8个标记都在那里。 你错过了最后一个点的lng的减号,所以它在你的范围之外绘制了一条距离,其中两个非常接近(5和7具有相同的lng)所以在你放大之前出现在同一个地方。 On your test case all 8 markers are there. You're missing the minus off the lng of the last point so it's plotting way off outside your scope and two of them are ...
-
当您使用var -keyword添加标记时,稍后将无法访问该变量,因为未定义的变量, setMap的调用失败(并停止进一步的脚本执行)。 使用单个标记的示例(标记将存储为地图的属性): google.maps.event.addListener(map, "click", function(event) { //closure for the map var that=this; //only create a single marker if(!th ...
-
Google Maps API v.3在标记点击上清除和添加标记(Google Maps API v.3 Clearing and adding markers on marker click)[2023-01-21]
MarkerMangager显示的标记不是您创建的标记(并作为参数提供给mgr.addMarker() ),MarkerManager创建新实例,当您删除存储在markersArray的标记时,这些实例不会被删除(什么不是有任何视觉效果,因为markersArray中存储的标记不可见) 您可以在deleteOverlays()调用mgr.clearMarkers()来删除MarkerManager创建的实例,但不需要使用markersArray的完整方法。 你根本不需要这个数组,只需调用mgr.clearM ... -
您需要存储标记,并为每个要从地图中移除的标记调用setMap(null) 。 你可以尝试这样的事情: var setMarkers = (function() { var oldMarkers = null; return function(map, locations){ //Clearing markers, if they exist if(oldMarkers && oldMarkers.length !== 0){ for(v ...
-
navigator.geolocation.getCurrentPosition()是异步的。 像这样重新组织你的代码: var mapOptions = { zoom: 8, mapTypeId: google.maps.MapTypeId.HYBRID } function initialize() { // Check if user support geo-location if (navigator.geolocation) { navigator ...
-
您无需等待空闲事件。 第一次'bounds_changed'事件触发时,地图边界可用。 等待bounds_changed事件; 每当边界发生变化(包括第一次),然后在地图上更新标记。 工作小提琴 代码段: var map; var bounds; function initialize() { map = new google.maps.Map(document.getElementById("googleMap"), { zoom: 12, center: new goo ...