我有一个矢量图层,用于在我的地图上显示标记作为特征,但现在我不知道,我做什么,它们是可以拖拽或可点击的.我能做些什么来获得两者?
/*** Init Drag Marker
*/
var dragFeature = new OpenLayers.Control.DragFeature(layerTrackMarker,
{'onComplete': updateMarker}
);
map.addControl(dragFeature);
dragFeature.activate();
/*** Init Click Marker
*/
var clickFeature = new OpenLayers.Control.SelectFeature(layerTrackMarker,
{}
);
map.addControl(clickFeature);
layerTrackMarker.events.on({
"featureselected": function(e) {
var markerId = e.feature.geometry.id;
removeMarker(markerId);
/* ToDo: show context menu */
},
"featureunselected": function(e) {
/* ToDo: hide context menu */
}
});
clickFeature.activate();
Run Code Online (Sandbox Code Playgroud) 我正在尝试将标记统一为一堆SVG图像.我的问题是我不能在标记定义中使用外部引用.它可能连接到问题如何正确引用svg中的外部svg文件?但仍然缺少一个链接.
我举了一个例子来证明我的问题:
b.svg(引用):
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<defs>
<circle id="b" r="6" stroke="black" fill="green" />
<marker id="b_end"
orient="auto"
style="overflow:visible">
<use xlink:href="#b" />
</marker>
</defs>
</svg>
Run Code Online (Sandbox Code Playgroud)
a.svg(试图引用b.svg):
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<defs>
<circle id="a" r="6" stroke="black" fill="yellow" />
<marker id="a_end"
orient="auto"
style="overflow:visible">
<use xlink:href="#a" />
</marker>
<marker id="b_end"
orient="auto"
style="overflow:visible">
<use xlink:href="b.svg#b" />
</marker>
</defs>
<path d="m 10,10 20,20" style="marker-end:url(#a_end)" stroke="black" />
<path d="m 40,10 20,20" style="marker-end:url(#b_end)" stroke="black" />
<path d="m 70,10 20,20" style="marker-end:url(b.svg#b_end)" stroke="black" />
</svg>
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我通过内部id引用了第一行的标记(实际上是两个,因为标记也有引用).这很好用.
我使用内部标记定义和第二行的外部路径.它不起作用.(线是显示的,标记不是.)
我在第三行使用了外部标记.它也不起作用. …
我遇到了这个问题,我希望有人能引导我找到解决方案,我已经花了3天才到现在为止..
问题
我有2个活动,活动A是从JSON列表填充的列表视图.活动B是基于相同json列表的Google maps v2,但是它不在列表上.
on activity 一个列表onItemclicklistener,当我点击它时显示另一个活动,它的工作正常.这里没问题.一切都像是假设的那样.
在Activity B上有map片段,它也填充了JSON列表中的lat-lng值.所以地图上有10个+标记.因此,当我点击标记时,我得到的名称和地址以及它的工作正常.
这就是我想要的
当我点击列表中的项目就带我到活动Ç.并且有一些文本视图显示公司哪些日子是公开的.这一步已经完成,它的工作正常,所有的东西都是这样的.
当我点击地图时,有标记,所以我有onInfoWindowClick().它也没关系,但我如何从中获得更多价值onInfoWindowClick()?
我的意思是,我可以得到(来自标记的getSnippet和getTitle)但我在列表中有其他值,如name,days,id's.我得到的只是.getsnippet和getTitle通过标记.
我非常坚持这个问题.我真的想在列表上做同样的事情.当我按下列表时它获取所有值但是当我在地图上时我只能获得带有标题和片段的标记窗口.我很抱歉,如果我无法解释好,请随时问我是否有更多你想看的代码.
for (HashMap<String, String> hashMap : contactList) {
map.addMarker(new MarkerOptions()
.position(new LatLng(Double.valueOf(hashMap.get(TAG_LAT)) , Double.valueOf(hashMap.get(TAG_LNG))))
.title(hashMap.get(TAG_ADDRESS))
.snippet(hashMap.get(TAG_NAME)) );
Run Code Online (Sandbox Code Playgroud)
@Override
public void onInfoWindowClick(Marker marker) {
marker.getTitle();
marker.getSnippet();
}
Run Code Online (Sandbox Code Playgroud)
更新的代码
public class MapBased extends AbstractMapActivity implements OnNavigationListener,OnInfoWindowClickListener
{
private static final String TAG_Location = "location_id";
private static final String TAG_Company = "company_id";
private static final …Run Code Online (Sandbox Code Playgroud) 好的,默认情况下,在标记点击时,标记在地图上居中.问题是,我有高的infoView,从布局膨胀,它显示出地图范围.我该怎么做,将视图中心固定,并将其定位在地图中心下方,以使infoWindow可见.
我正在制作一个关于在挪威遇害的骑车人的网站.对于我的项目,我一直在使用谷歌地图api v3,但我对javascript有着模糊的熟悉.您可以在此处查看我的结果:http://salamatstudios.com/googlemapstest/
基本上我想在每个标记上都有多个带有infowindows的标记.每个infowindows将包含:姓名(年龄),位置,死亡日期,阅读更多(将链接到网站本身的页面).
就像这个例子:http://salamatstudios.com/bicycles/
我尝试使用一个标记和infowindow,并且工作得很好.当我想添加带有自定义信息窗口的新标记时,我就会卡住.目前,我在第一个链接中看到了不同位置的3个标记,但是当我单击标记时,没有任何信息窗口出现.
如何绕过它来编码它以便出现信息?我怎样才能在每个infowindow中都有自定义文本?完成后,我将在地图上有大约30-40个标记.所有信息窗口都有不同类型的信息.
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(65.18303, 20.47852),
zoom: 5,
mapTypeId: google.maps.MapTypeId.ROADMAP,
// MAP CONTROLS (START)
mapTypeControl: true,
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.LEFT_TOP
},
streetViewControl: true,
streetViewControlOptions: {
position: google.maps.ControlPosition.LEFT_TOP
},
// MAP CONTROLS (END)
};
var map = new google.maps.Map(document.getElementById("map"),
mapOptions);
// -------------- MARKER 1
var marker1 = new google.maps.Marker({
position: new google.maps.LatLng(59.96384, 11.04120), …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何工作要实现一个适配器,例如CursorAdapter,它能够将Markers放到由Activity或FragmentActivity托管的GoogleMap上.Adapter类的定义指出:
一个适配器对象充当之间的桥梁适配器视图和该视图的底层数据.所述适配器可访问的数据项.该适配器还负责制作查看在数据集中的每个项目.
如果您将标记解释为地图图层顶部的视图,则适配器适合桥接底层数据以在地图上显示.
问题是我的示例中的CursorAdapter的常见模式不适用于映射大小写:
public void bindView(View view, Context context, Cursor cursor) {
// Retrieve data from the cursor
// Update the view holder with actual values
}
public View newView(Context context, Cursor cursor, ViewGroup parent) {
// Inflate XML layout for a list item …Run Code Online (Sandbox Code Playgroud) android marker google-maps-markers android-adapter google-maps-android-api-2
谷歌地图有一个很好的功能叫做Marker Clusterer,它允许你将基于网格的聚类应用于一组标记.
Marker Clusterer将每个标记计为一个,它总结了网格中标记的数量.不同的是,我想为每个标记分配权重,并在群集中总结这些权重.是否可以使用Google Maps API?你知道其他任何提供类似功能的javascript库吗?
javascript google-maps marker google-maps-markers markerclusterer
我正在使用GMap.NET代码来处理地图和标记.添加标记并对地图执行任何操作都不是从地图中删除单个标记的问题.我在Google上到处研究过从地图上删除标记,但删除标记似乎不是一个热门话题.
这是我用来添加的代码的片段.
private void AddMarker_ButtonClick(object sender, AddMarkerEventArgs e)
{
DBDictAdd("Marker", " ",e.Latitude, e.Longitude, true, "192.168.1.1");
m_dbMarkers.Insert(_table, dbmarkertable);
dbmarkertable.Clear();
GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(e.Latitude, e.Longitude),
GMarkerGoogleType.green);
marker.ToolTip = new GMapRoundedToolTip(marker);
marker.ToolTipMode = MarkerTooltipMode.OnMouseOver;
marker.Tag = MarkerIndex;
marker.ToolTipText = (marker.Position.ToString());
markersOverlay.Markers.Add(marker);
MarkerIndex++;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用SQLite将数据ID和其他信息存储到数据库中以供标记使用.我正在使用数据库方法,因为我需要使用标记位置存储更多信息.这部分代码有效.
我遇到的问题是调用标记信息,所以我可以删除它.我知道这两个电话存在.
markersOverlay.Markers.Remove();
markersOverlay.Markers.RemoveAt();
Run Code Online (Sandbox Code Playgroud)
我已经使用了该removeAt命令,但我必须手动完成,并注意到使用该removeAt(0)命令每次从该数组的第一个条目获取它.
这是我到目前为止所尝试的:
private void uxRemoveMarkerButton_Click(object sender, EventArgs e)
{
MessageBox.Show("Select the marker to remove.");
uxGmap.OnMarkerClick += new MarkerClick(uxGmap_OnMarkerClick);
}
private void uxGmap_OnMarkerClick(object sender, EventArgs e)
{ …Run Code Online (Sandbox Code Playgroud) 我尝试了我在网上找到的所有东西,Stackoverflow和Github,我仍然无法做到.
我想用自定义图标制作自定义标记,但是我的代码总是出现错误:'TypeError:options.icon.createIcon不是函数'
这是我的代码(文件夹路径没有错误,一切都在src/js或src/img中)
Icon.js
import L from 'leaflet';
const iconPerson = L.Icon.extend({
options: {
iconUrl: require('../img/marker-pin-person.svg'),
iconRetinaUrl: require('../img/marker-pin-person.svg'),
iconAnchor: null,
popupAnchor: null,
shadowUrl: null,
shadowSize: null,
shadowAnchor: null,
iconSize: new L.Point(60, 75),
className: 'leaflet-div-icon'
}
});
export { iconPerson };
Run Code Online (Sandbox Code Playgroud)
MarkerPinPerson
import React from 'react';
import { Marker } from 'react-leaflet';
import { iconPerson } from './Icons';
export default class MarkerPinPerson extends React.Component {
render() {
return (
<Marker
position={this.props.markerPosition}
icon={ iconPerson }
>
</Marker>
);
}
}
Run Code Online (Sandbox Code Playgroud)
真的在寻求你的帮助!
marker ×10
android ×3
javascript ×2
maps ×2
c# ×1
center ×1
click ×1
drag ×1
gmap.net ×1
google-maps ×1
icons ×1
infowindow ×1
ios11 ×1
leaflet ×1
mapkit ×1
mkannotation ×1
openlayers ×1
reference ×1
sqlite ×1
svg ×1