正如您在下面的代码中看到的那样,标记是可拖动的.在某些情况下,如果标记被丢弃在错误的区域(多边形),我想取消放置事件,因此标记会自动返回其原始位置.
function placeMarker(latlng, color, isDraggable) {
var marker = new GMarker(latlng, { icon: getIcon(color), draggable: true });
map.addOverlay(marker);
GEvent.addListener(marker, "dragend", function () {
//redraw polygons again
});
GEvent.addListener(marker, "click", function () {
var latlng = marker.getPoint();
map.openInfoWindowHtml(marker.getPoint(), latlng.y + ", " + latlng.x);
});
return marker;
}
Run Code Online (Sandbox Code Playgroud)
问题是如何在事件中已经删除标记时取消标记的拖动dragend事件?
我正在为Web应用程序制作区域绘图工具,我使用标记作为锚点,用户可以使用它来更改多边形的形状.
这就是我到目前为止所拥有的.http://demos.nodeline.com/leaflet_development/
回购邮件是https://github.com/SpencerCooley/Leaflet_development
$(document).ready(function(){
var map, cloudmade, sanAntonio, polygonPoints
map = new L.Map('map');
cloudmade = new L.TileLayer('http://{s}.tile.cloudmade.com/d4334cd6077140e3b92ccfae2b363070/997/256/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>',
maxZoom: 18
});
sanAntonio = new L.LatLng(29.4238889, -98.4933333); // geographical point (longitude and latitude)
map.setView(sanAntonio, 13).addLayer(cloudmade);
polygonPoints = [];
var polygon = new L.Polygon(polygonPoints);
map.addLayer(polygon);
map.on('click', function(e) {
var marker = new L.Marker(e.latlng, {draggable:true});
polygonPoints.push(e.latlng);
var markerId = polygonPoints.length -1
map.addLayer(marker);
polygon.setLatLngs(polygonPoints);
marker.on('drag', function(){
var locationWhileDrag = …Run Code Online (Sandbox Code Playgroud) 我正在使用音频轨道以流模式播放不同的声音.我想知道是否有办法知道每个声音的生命/结束时间.
我像这样创建音轨:
AudioTrack tmpAudioTrack = new AudioTrack(
STREAM_TYPE,
SAMPLE_RATE,
CHANNEL_CONFIG_TYPE,
AUDIO_FORMAT_TYPE,
getOptimalBufferSize(),
AUDIO_TRACK_MODE);'
Run Code Online (Sandbox Code Playgroud)
并在后台线程中启动它:
backround_thread = new Thread(new MyRunnable(aTrack));
backround_thread.start();
Run Code Online (Sandbox Code Playgroud)
我在runnable中写出这样的每个声音:
byte generatedSnd[] = new byte[2 * beepSamples];
<code for filling the buffer with sound here>
int bytesWritten = track.write(generatedSnd, 0, generatedSnd.length);
Run Code Online (Sandbox Code Playgroud)
可以使用任何AudioTrack API,如setNotificationMarkerPosition,setLoopPoints或setPositionNotificationPeriod来完成此操作吗?它们是如何工作的?
每个声音可以是不同的持续时间.我认为这是关键.
我不完全理解这些API的文档.每个框架是否与样本相同?如何为每个声音的开始/结束位置指定标记?
谢谢,
在官方文档中找不到答案,那么有没有像旧版MapView那样自动生成GoogleMap绘图标记阴影的方法?
我知道我可以手动绘制它,但我想知道这种方便的行为是否仍然存在
在我们的应用中,许多标记被绘制在不同的位置,并且在某些情况下在某个缩放级别,标记彼此重叠.因此,当我点击标记时,我希望顶部标记onMarkerClick被触发,但是它会针对最后一个隐藏标记触发,即最后一个标记,后面没有标记.
你有什么建议我这样做?此外,我没有信息窗口,因此我true从onMarkerClick方法返回.
尝试使用得到应用的角度,谷歌,地图:与
通过多个标记- markers指令
通过一个单一的信息窗口- window指令
我已经通过API和git-hub网站上的多个已关闭的问题/问题,但是无法让它工作......: - /
为简单起见,我手动声明标记(并且它们正确显示):
$scope.markers = [
{
id: 0,
coords: {
latitude: 37.7749295,
longitude: -122.4194155
},
data: 'restaurant'
},
{
id: 1,
coords: {
latitude: 37.79,
longitude: -122.42
},
data: 'house'
},
{
id: 2,
coords: {
latitude: 37.77,
longitude: -122.41
},
data: 'hotel'
}
];
Run Code Online (Sandbox Code Playgroud)
html看起来像:
<body ng-app="app">
<div class="angular-google-map-container" ng-controller="MainCtrl">
<ui-gmap-google-map center="map.center" zoom="map.zoom" draggable="true" options="map.options" events="map.events" control="googlemap">
<ui-gmap-window coords="markers.coords" show="windowOptions.show" closeClick="closeClick()">
<div>Hello</div>
</ui-gmap-window>
<ui-gmap-markers models="markers" idkey="markers.id" coords="'coords'" …Run Code Online (Sandbox Code Playgroud) 我意识到在标记上设置图标,它将LatLng中心定位在图标drawable的底部.我像这样设置标记:
BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.mi_posicion_marker);
mMarkerMiPosicion = mMap.addMarker(new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude())).title("I am here!").icon(icono));
Run Code Online (Sandbox Code Playgroud)
如何"标记"可绘制图标中心的标记位置?
Marker marker = mMap.addMarker(markerOptions);
marker.setTag(poi.getKey());
marker.hideInfoWindow();
builder.include(marker.getPosition());
Run Code Online (Sandbox Code Playgroud)
这段代码正常,因为我把manuel作为manuel.我做了一切marker.tag().我使用哈希键来重新检查我的引脚.
mClusterManager.addItem() 我想用这个方法.但我也想拿标记标记.所以我不想添加到地图中Marker marker = mMap.addMarker(markerOptions);
我怎么解决这个问题?
我想解释更多细节.
public class PoiItem implements ClusterItem{
private final LatLng mPosition;
private String mTitle;
private String mSnippet;
private String tag;
private ResponsePoi pois;
public PoiItem(ResponsePoi poi,double lat, double lng,String tag) {
mPosition = new LatLng(lat, lng);
pois = poi;
mTitle = poi.getName();
mSnippet = poi.getAddress();
this.tag = tag;
}
private void setMyCluster(){
mClusterManager = new ClusterManager<PoiItem> (MainActivity.this,mMap);
mMap.setOnCameraIdleListener(mClusterManager);
mMap.setOnMarkerClickListener(mClusterManager);
}
setMyCluster();
for(HashMap.Entry<String, ResponsePoi> poi …Run Code Online (Sandbox Code Playgroud) 我正在使用MapBoxgl,我想添加几个标记.
这是我的index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<link href=" /assets/css/bootstrap.min.css " rel="stylesheet" />
<link href=" /assets/css/mapbox-gl.css " rel="stylesheet" />
<link href=" /assets/css/main.css " rel="stylesheet" />
</head>
<body>
<div id="map"></div>
<script src="/assets/js/mapbox-gl.js"></script>
<script src="/assets/js/map-style.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是map-style.js:
var map = new mapboxgl.Map({
container: 'map',
center: [57.3221, 33.5928],
zoom: 5,
style: style
});
var geojson = {
type: 'FeatureCollection',
features: [{
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [30.61, 46.28]
},
properties: {
title: 'point 1',
description: 'point 1 Description', …Run Code Online (Sandbox Code Playgroud) marker ×10
android ×6
google-maps ×4
angularjs ×1
audiotrack ×1
click ×1
dictionary ×1
draggable ×1
infowindow ×1
javascript ×1
leaflet ×1
mapbox ×1
mapbox-gl-js ×1
maps ×1
overlap ×1
shadow ×1