google map api V3 如何对marker进行操作。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了google map api V3 如何对marker进行操作。相关的知识,希望对你有一定的参考价值。
初始化时就已经加入了一个marker:
var marker = new google.maps.Marker(
position: latlng,
map: map,
draggable: true
);
然后我又定义了一个marker_viewport ,单击地图时创立一个其他图标的marker。
google.maps.event.addListener(map, 'click', function(event)
var marker_viewport = new google.maps.Marker(
position: event.latLng,
map: map,
draggable: true,
icon: icon_viewport
);
);
此时单击地图能够创建标记,我想在右键单击这种标记时能够删除当前标记(不仅是在overlay上,内存里也要删除)。
google.maps.event.addListener(marker_viewport, 'rightclick', function(event)
????????
);
这里该怎么写?我知道可以通过marker.setMap(null)(这是不是该写成marker_viewport.setMap(null))清空标记,但是不知道该如何删除当前event所在的标记?看了看api貌似需要把marker_visible push到一个数组中,然后该怎么操作?不知道如何获取当前标记在数组中的位置。
另外我用for循环把推入到数组中的marker全部删除,只有在监听器为marker时有效,也就是右键单击地图初始化时就加入的标记才有效,而换成marker_viewport就无效了?
设置断点看了半天也没搞清怎么回事。
本人实在是非专业,只是业余做点东西玩,按回答的质量再加分,本人7000多财富请放心...
(function(i,marker_viewport)
gEvent.addListener(marker_viewport, "rightclick", function(mouseEvent)
marker_viewport.setMap(null);
//还可以在你的marker全局数组中删除他,使用javascript中Array的splice方法,或者使用google的MVCArray,
)
)(i,marker_viewport);
可能跟你的需求不太一样,具体自己灵活使用,推荐看看Apress.Beginning.Google.Maps.API.3.Jul.2010(没有中文版) 参考技术A 最近在做GoogleMap Js的API,项目是做完了,也同样发现了js控制这个Marker和OverlayView内存溢出问题很严重,Google和BaiDu后都说JS无法实现内存回收机制。后来我看来很多资料后,勉强提升了下性能,这里给LZ分享下,希望可以有用。
一、我在每个onRemove里会写上把所有这个层的变量置空即=null的操作,之后调用CollectGarbage()这个函数 释放内存 不过这个效果不是很明显,究其根本原因网上说法也很多。我总结了下大概是这么个原因,JS对变量的使用存在着问题,我们var了一个之后在内存中这个变量就一直存在,因此无法回收,尤其是Obecjt这样的对象,要把所有Obeject对象的属性和方法置null才可以真正有效的回收,因此建立LZ写JS时及时对变量置null才是关键所在。
二、我换了机器的系统,发现内存稳定很多,原先是03现在换成windows7了
要是有什么发现LZ要baidu hi里告诉我啊,互相学习
-----------------好像偏题了 -----------------------
Marker应该写成公共的变量吧,你在addListener里定义的变量,外面应该是调用不到了,这样你这么使用setMap()呢,是吧 参考技术B skdjfsifisdffhsjhfgshgsdh jshfsddhfgsdfjsdgd 参考技术C 把教材多看一下
如何使地图在 google maps api for android 中离线工作?
【中文标题】如何使地图在 google maps api for android 中离线工作?【英文标题】:how to make maps work offline in google maps api for android? 【发布时间】:2016-08-04 15:52:48 【问题描述】:我对这个 api 完全陌生,我想知道是否有一种方法可以离线使用地图。我不介意应用程序的大小很大,所以如果无论如何涉及缓存或其他与大小相关的东西,这不是问题
有什么建议吗?
ps:如果在 google 的 api 中不可能,有没有办法用另一个提供映射服务的来源的另一个 api 来做到这一点?
【问题讨论】:
以下重复 - ***.com/questions/6109369/… 和/或这个 - ***.com/questions/33235835/… 这是我过去 6 个月尝试的。还没有发现。谷歌严格否认它的条款。你没有办法解决。使用 osmdroid 。这应该会派上用场。 【参考方案1】:您可以尝试使用osmdroid 离线使用 Google 地图。 Osmdroid 是 Android 的 MapView 类的替代品。它还包括一个模块化的 tile 提供程序系统,支持众多在线和离线 tile 源,并具有用于绘制图标、跟踪位置和绘制形状的内置覆盖的覆盖支持。
你可以关注这个tutorial了解如何使用它。
【讨论】:
以上是关于google map api V3 如何对marker进行操作。的主要内容,如果未能解决你的问题,请参考以下文章
Google maps API V3 - 无法对 AutocompleteService 预测进行地理编码
Google Maps Api v3 - 如何删除集群图标?
Google Maps API v3 中的 OVER_QUERY_LIMIT:如何在 Javascript 中暂停/延迟以减慢速度?