gpt4 book ai didi

javascript - 如何创建类似标记的 Google Latitude?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:13 27 4
gpt4 key购买 nike

在我的 HTML5 应用程序中,我使用 Google Map v3 并在 map 上添加了几个标记。放置新标记和更改图标很容易,但我希望能够构建类似于 Google Latitude 中使用的标记。这些标记设置有图标图像和漂亮的边框。
关于如何执行此操作的任何想法?

最佳答案

您可以在服务器端执行此操作,或者因为您使用的是 HTML 5 并假设您有可用的 Canvas ,您可以在客户端执行此操作。下面是一种使用 HTML 5 Canvas 在客户端执行此操作的方法。在服务器端执行此操作因您使用的语言而异,但技术是相似的。

下载这些图像并试用。图片需要与页面位于同一域中,以避免出现安全错误。它们也应该位于同一目录中,除非您更新 HTML 中的位置。

face1 face2 face3 frame

页面加载后,单击面孔,系统将使用提供的帧图像创建随机标记并将其添加到 Google map 。

enter image description here

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; utf-8">
<title>HTML 5 Canvas Image Processing</title>
</head>
<body>
<img onclick="build(this)" id="face1" src="face1.png"/>
<img onclick="build(this)" id="face2" src="face2.png"/>
<img onclick="build(this)" id="face3" src="face3.png"/>
<img id="frame" src="frame.png"/>
<div id="map_canvas" style="width:640px;height:480px;">
</div>
<script type="text/javascript">

function build(caller){
var image = getMergedUrl(document.getElementById("frame"), caller);
var myLatLng = getRndPos(map.getBounds());
var myMarker = new google.maps.Marker({
position: myLatLng,
map: map,
icon: image
});

}

function getRndPos(bounds) {
var xDiff = Math.abs(bounds.getNorthEast().lng() - bounds.getSouthWest().lng());
var yDiff = Math.abs(bounds.getNorthEast().lat() - bounds.getSouthWest().lat());
var xMin = Math.min(bounds.getNorthEast().lng(),bounds.getSouthWest().lng());
var yMin = Math.min(bounds.getNorthEast().lat(),bounds.getSouthWest().lat());
var x = xMin + xDiff * Math.random();
var y = yMin + yDiff * Math.random();
var pos = new google.maps.LatLng(y,x);
return pos;
}

function getMergedUrl(frame, pic){
// Create an empty canvas element
var canvas = document.createElement("canvas");
canvas.width = frame.width;
canvas.height = frame.height;

// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(frame, 0, 0);
ctx.drawImage(pic, 4, 4);

// Get the data-URL formatted image
var dataURL = canvas.toDataURL("image/png");

return dataURL;
}

function initialize(){
var myLatlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

function loadScript(){
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initialize";
document.body.appendChild(script);
}

window.onload = loadScript;
</script>
</body>
</html>

感谢Matthew Crumley来自 here 的 toDataUrl 代码.

关于javascript - 如何创建类似标记的 Google Latitude?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5792533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com