cub*_*Guy 3 javascript svg google-maps google-maps-api-3
我正在尝试向我的 SVG 标记添加标签,但文本相对于标记的位置出现问题,反之亦然。
这是我的图标:
var clickIcon = {
path: 'M8,0C3.400,0,0,3.582,0,8s8,24,8,24s8-19.582,8-24S12.418,0,8,0z M8,12c-2.209,0-4-1.791-4-4 s1.791-4,4-4s4,1.791,4,4S10.209,12,8,12z',
fillColor: myRandomColor,
fillOpacity: 1,
strokeColor: myRandomColor,
strokeWeight: 1
};
Run Code Online (Sandbox Code Playgroud)
这是我添加标记的地方:
clickMarker = new google.maps.Marker({
position: location,
map: map,
animation: google.maps.Animation.DROP,
draggable: isDraggable,
icon: clickIcon,
label: {
text: labels[labelIndex++ % labels.length],
color: 'black',
fontSize: '15px',
fontWeight: 'bold'
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,我只添加了相关代码,如果需要更多让我知道。如您所见,我无法对齐标签和标记。理想情况下,我希望将它放在图钉圈内,但在图钉下方也可以使用。提前致谢。
使用Symbol的labelOrigin
属性
标签原点
类型:点
如果标签由标记提供,则标签的原点相对于路径的原点。默认情况下,原点位于 (0, 0)。原点在与符号路径相同的坐标系中表示。此属性不用于折线上的符号。
代码片段:
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var clickIcon = {
path: 'M8,0C3.400,0,0,3.582,0,8s8,24,8,24s8-19.582,8-24S12.418,0,8,0z M8,12c-2.209,0-4-1.791-4-4 s1.791-4,4-4s4,1.791,4,4S10.209,12,8,12z',
fillColor: "#ff0000",
fillOpacity: 1,
strokeColor: "#ff0000",
strokeWeight: 1,
labelOrigin: new google.maps.Point(8, 10),
anchor: new google.maps.Point(9, 35),
};
var clickMarker = new google.maps.Marker({
position: map.getCenter(),
map: map,
// animation: google.maps.Animation.DROP,
draggable: true,
icon: clickIcon,
label: {
text: "A",
color: 'black',
fontSize: '15px',
fontWeight: 'bold'
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
Run Code Online (Sandbox Code Playgroud)
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map_canvas"></div>
Run Code Online (Sandbox Code Playgroud)