在我的HTML5應用程序中,我使用Google Map v3並在地圖上添加了多個標記。很容易放置新標記並更改圖標,但我希望能夠構建像Google Latitude中使用的標記。這些標記設置了一個圖標圖像和一個不錯的邊框。
關於如何做到這一點的任何想法?如何創建Google Latitude類似標記?
3
A
回答
6
你可以做這個服務器端,或者因爲你使用HTML 5,並假設你有畫布可用,你可以在客戶端做到這一點。以下是使用HTML 5畫布進行客戶端操作的一種方法。做它服務器端會根據您使用的語言而有所不同,但技術會類似。
下載這些圖片並試用。圖像需要與頁面位於同一個域中以避免安全錯誤。除非您更新HTML中的位置,否則它們也應位於相同的目錄中。
頁面加載後,單擊面和隨機標記將使用所提供的幀圖像被創建並添加到谷歌地圖。
<!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代碼。
+0
完美!!!!!!非常感謝。 – Luc 2011-04-30 16:51:32
相關問題
- 1. Google Latitude API
- 2. 創建類似img標籤
- 3. 如何創建一個類似Google的建議下拉列表?
- 4. Google Latitude API和OAuth
- 5. 如何在iOS中創建類似Google報亭的設計
- 6. 如何創建類似Google+中的工具提示?
- 7. 如何從Google創建類似的動畫?
- 8. 如何創建類似Android的按鈕Google Plus應用程序
- 9. 如何創建錨標記
- 10. 用PHP創建Google地圖標記
- 11. Google Maps API v3無法創建標記...
- 12. 如何在Google上創建類似Google +1按鈕的微光動畫
- 13. 創建類似於fb:標籤
- 14. 創建類似iPhone
- 15. 如何在Google地圖中創建移動標記
- 16. Google地圖:如何爲自定義標記創建一個infowindow?
- 17. 如何在Google maps 3d flash api中創建平面標記?
- 18. 如何在Google地圖上創建多個標記100+
- 19. 如何在Google Maps v3中爲每個標記創建infowindow?
- 20. 如何在Google地圖上創建多個標記?
- 21. 我如何創建類似的excel?
- 22. 如何創建類似於Android
- 23. 如何創建類似於Android
- 24. 如何創建類似的聊天iMessage?
- 25. 如何創建類似庫的視圖
- 26. 如何創建類似http://api.example.com的URL
- 27. 如何創建許多類似的ViewControllers
- 28. 如何創建類似於NSTableView的iOs?
- 29. 如何創建類似NSURLConnection的東西?
- 30. 如何創建類似whatsapp的節標題列表?
您是使用任何JavaScript框架還是願意使用支持JavaScript框架的插件? – kjy112 2011-04-26 15:22:51
@ kjy112,我只使用jQuery。 – Luc 2011-04-26 15:44:06