我需要帮助修改此代码以创建圆形拖动和可编辑半径。
示例:用户应该可以将圆圈拖到不同的位置并更改半径。
我不确定是否有任何参数或选项来传递价值以激活此功能,如果任何人可以帮助我,这将是非常有用的。
提前感谢你。
function addCircleToMap(map){
map.addObject(new H.map.Circle(
// The central point of the circle
{lat:36.178699, lng:-115.146171},
// The radius of the circle in meters
1000,
{
style: {
strokeColor: 'rgba(55, 85, 170, 0.6)', // Color of the perimeter
lineWidth: 2,
fillColor: 'rgba(0, 128, 0, 0.7)' // Color of the circle
}
}
));
}
//Step 1: initialize communication with the platform
var platform = new H.service.Platform({
app_id: 'DemoAppId01082013GAL',
app_code: 'AJKnXv84fjrb0KIHawS0Tg',
useCIT: true,
useHTTPS: true
});
var defaultLayers = platform.createDefaultLayers();
//Step 2: initialize a map - this map is centered over las vegas
var map = new H.Map(document.getElementById('map'),
defaultLayers.normal.map,{
center: {lat:36.178699, lng:-115.146171},
zoom: 13
});
//Step 3: make the map interactive
// MapEvents enables the event system
// Behavior implements default interactions for pan/zoom (also on mobile touch environments)
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
// Create the default UI components
var ui = H.ui.UI.createDefault(map, defaultLayers);
// Now use the map as required...
addCircleToMap(map);

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<link rel="stylesheet" type="text/css" href="https://js.cit.api.here.com/v3/3.0/mapsjs-ui.css" />
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-core.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-service.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-ui.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-mapevents.js"></script>
</head>
<body>
<div id="map" style="width: 100%; height: 400px; background: grey" />
</body>
</html>
&#13;
答案 0 :(得分:0)
根据HERE map API,您需要在开始拖动圆形对象时禁用基础地图的默认可拖动性:
map.addEventListener('dragstart', (ev) => {
const target = ev.target;
if (target instanceof H.map.Circle) {
behavior.disable();
}
}, false);
在圆圈拖动过程中,您需要聆听拖动事件并移动圆圈的位置:
map.addEventListener('drag', (ev) => {
const target = ev.target,
pointer = ev.currentPointer;
if (target instanceof H.map.Circle) {
target.setCenter(map.screenToGeo(pointer.viewportX, pointer.viewportY));
}
}, false);
完成拖动后,您需要重新启用基础地图的默认可拖动性。
map.addEventListener('dragend', (ev) => {
const target = ev.target;
if (target instanceof H.map.Circle) {
behavior.enable();
}
}, false);
您可以通过调用圆形对象上的setRadius
来更改圆半径。
答案 1 :(得分:0)
function addCircleToMap(map){
var circle = new H.map.Circle(
new H.geo.Point(36.1786991, -115.146171), //center
1000, // Radius in meters
{
style: {
strokeColor: '#FF0000', // Color of the perimeter
lineWidth: 3,
fillColor: 'rgba(226, 180, 183, 0.5)' // Color of the circle
}
}
);
circle.draggable = true;
map.addObject(circle);
}
//Step 1: initialize communication with the platform
var platform = new H.service.Platform({
app_id: 'DemoAppId01082013GAL',
app_code: 'AJKnXv84fjrb0KIHawS0Tg',
useCIT: true,
useHTTPS: true
});
var defaultLayers = platform.createDefaultLayers();
//Step 2: initialize a map - this map is centered over las vegas
var map = new H.Map(document.getElementById('map'),
defaultLayers.normal.map,{
center: {lat:36.178699, lng:-115.146171},
zoom: 13
});
//Step 3: make the map interactive
// MapEvents enables the event system
// Behavior implements default interactions for pan/zoom (also on mobile touch environments)
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
//Step 4, initilize drag for map objects.
map.addEventListener('dragstart', (ev) => {
const target = ev.target;
if (target instanceof H.map.Circle) {
behavior.disable();
}
}, false);
map.addEventListener('drag', (ev) => {
const target = ev.target,
pointer = ev.currentPointer;
if (target instanceof H.map.Circle) {
target.setCenter(map.screenToGeo(pointer.viewportX, pointer.viewportY));
}
}, false);
map.addEventListener('dragend', (ev) => {
const target = ev.target;
if (target instanceof H.map.Circle) {
behavior.enable();
}
}, false);
// Create the default UI components
var ui = H.ui.UI.createDefault(map, defaultLayers);
// Now use the map as required...
addCircleToMap(map);
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, width=device-width" />
<link rel="stylesheet" type="text/css" href="https://js.cit.api.here.com/v3/3.0/mapsjs-ui.css" />
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-core.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-service.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-ui.js"></script>
<script type="text/javascript" src="https://js.cit.api.here.com/v3/3.0/mapsjs-mapevents.js"></script>
</head>
<body>
<div id="map" style="width: 100%; height: 400px; background: grey" />
</body>
</html>