Làm cách nào để vẽ một đường thẳng giữa hai điểm (Vĩ độ và Kinh độ) với API bản đồ của Google bằng jQuery hoặc Javascript? Tôi cần con đường ngắn nhất giữa hai điểm. Nó có thể là bất kỳ loại dòng nào.Vẽ một đường thẳng giữa hai điểm trên bản đồ Google bằng jQuery?
Trả lời
Chỉ dành cho API v2!
Đoạn mã sau tạo một polyline đỏ 10-pixel rộng giữa hai điểm:
var polyline = new GPolyline([
new GLatLng(37.4419, -122.1419),
new GLatLng(37.4519, -122.1519)],
"#ff0000", 10);
map.addOverlay(polyline);
Bạn có thể tìm thấy tài liệu here.
Điều này dành cho API v2 không được dùng nữa và sẽ ngừng hoạt động vào tháng 5 năm 2013. Rất khuyên bạn không nên sử dụng API này và sử dụng API v3 thay thế. – duncan
Đây là cách vẽ v3 của API v3.
var line = new google.maps.Polyline({
path: [
new google.maps.LatLng(37.4419, -122.1419),
new google.maps.LatLng(37.4519, -122.1519)
],
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 10,
map: map
});
Điều này chỉ đơn giản là vẽ một đường thẳng giữa hai điểm. Nếu bạn muốn nó là đường dẫn ngắn nhất , bạn cần tính đến thực tế rằng trái đất bị cong và vẽ một đường trắc địa. Để làm điều đó, bạn phải sử dụng các hình học thư viện trong API của Google Maps, bằng cách thêm này không bắt buộc thư viện tham số:
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
Và sau đó chỉ cần thêm geodesic: true
để các tùy chọn cho Polyline của bạn:
var line = new google.maps.Polyline({
path: [new google.maps.LatLng(37.4419, -122.1419), new google.maps.LatLng(37.4519, -122.1519)],
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 10,
geodesic: true,
map: map
});
Xem liên kết này: http://stackoverflow.com/questions/17377058/get-latlng-and-draw-a-polyline-between-that-two-latlng/17401013#17401013 – Anup
Điều này vẽ một đường thẳng giữa hai điểm ... và xa hơn nữa. Bạn chỉ cần giữ vào địa điểm mới vào hộp tìm kiếm và nó sẽ tiếp tục vẽ điểm giữa hai điểm gần đây nhất:
HTML:
<div id="inputDiv">
<input id="startvalue" type="text" width="90" value="" autofocus placeholder="Keep Adding Places and searching...">
</div>
<div id="map"></div>
<div id="results"></div>
JS:
var geocoder;
var map;
var location1;
var location2;
$(document).ready(function(){
initialize();
$("#startvalue").on('keydown',function(event){
if (event.keyCode == 13) {
createLine();
$(this).val("");
$(this).focus();
}
});
})
function initialize(){
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(7.5653, 80.4303);
var mapOptions = {
zoom: 4,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map"), mapOptions);
setZoom();
var input = /** @type {HTMLInputElement} */(
document.getElementById('startvalue'));
var searchBox = new google.maps.places.SearchBox(
/** @type {HTMLInputElement} */(input));
}
var address;
var address2;
function createLine(){
if (address){
address2 = document.getElementById('startvalue').value;
} else {
address = document.getElementById('startvalue').value;
}
var temp, temp2;
geocoder.geocode({ 'address': address }, function (results, status) {
// if (status != "OK") alert("geocode of address:"+address+" failed, status="+status);
temp = results[0].geometry.location;
if (address2){
geocoder.geocode({ 'address': address2 }, function (results, status) {
// if (status != "OK") alert("geocode of address:"+address+" failed, status="+status);
temp2 = results[0].geometry.location;
document.getElementById('results').innerHTML += temp2.toUrlValue()+"<br>";
var route = [
temp,
temp2
];
var polyline = new google.maps.Polyline({
path: route,
strokeColor: "#FF5E56",
strokeOpacity: 0.6,
strokeWeight: 5
});
location1 = convertLocationToLatLong(temp.toUrlValue())
location2 = convertLocationToLatLong(temp2.toUrlValue())
var lengthInMeters = google.maps.geometry.spherical.computeLength(polyline.getPath());
document.getElementById('results').innerHTML += "Polyline is "+lengthInMeters+" meters long<br>";
polyline.setMap(map);
plotMap(location1,location2);
});
address = address2;
} else {
location1 = convertLocationToLatLong(temp.toUrlValue());
plotMap(location1);
}
});
}
function convertLocationToLatLong(location){
var location = location.split(',').map(function(item) {
return parseFloat(item);
});
return location
}
function plotMap(location1,location2){
var location1 = new google.maps.LatLng(location1[0],location1[1]);
if (location2){
var location2 = new google.maps.LatLng(location2[0],location2[1]);
}
var bounds = new google.maps.LatLngBounds();
bounds.extend(location1);
if(location2){
bounds.extend(location2);
}
map.fitBounds(bounds);
setZoom();
}
function setZoom(){
google.maps.event.addListener(map, 'zoom_changed', function() {
zoomChangeBoundsListener =
google.maps.event.addListener(map, 'bounds_changed', function(event) {
if (this.getZoom() > 15 && this.initialZoom == true) {
// Change max/min zoom here
this.setZoom(15);
this.initialZoom = false;
}
google.maps.event.removeListener(zoomChangeBoundsListener);
});
});
map.initialZoom = true;
}
CSS:
#map {
margin: 0;
padding: 0;
height: 400px;
margin-top:30px;
width:100%;
}
#inputDiv{
position:absolute;
top:0;
}
#startvalue{
width:300px;
padding:8px;
}
Đầu vào trông như thế nào? Một nơi là gì? Một điểm dài lat? –
- 1. Vẽ đường thẳng giữa hai ô con
- 2. Hiển thị tuyến đường giữa hai điểm trên bản đồ với bản đồ: ios7
- 3. Làm thế nào để vẽ một đường thẳng/liên kết giữa hai điểm trên bản đồ D3 dựa trên vĩ độ/kinh độ?
- 4. Android, vẽ tuyến đường trên bản đồ google
- 5. Cách vẽ đường thẳng đứng giữa hai nút trong android
- 6. Vẽ đường thẳng giữa các địa chỉ trên android
- 7. Vẽ các đường thẳng đứng trên sơ đồ phổ MATLAB
- 8. đồ thị tương tác matplotlib (vẽ đường thẳng trên biểu đồ)
- 9. Làm cách nào để vẽ một đường thẳng giữa hai div?
- 10. Làm cách nào để hiển thị tuyến đường giữa hai geocoords trong bản đồ google?
- 11. Vẽ một điểm đánh dấu như bản đồ google với TCanvas trên Delphi
- 12. vẽ đồ thị trên Google Maps
- 13. Với 2 điểm, làm cách nào để vẽ một đường thẳng ở góc vuông với đường thẳng được tạo bởi hai điểm?
- 14. Vẽ đường thẳng giữa mô hình và Bộ điều khiển
- 15. Vẽ chỉ đường trên Google Maps
- 16. Cách tìm hai tuyến đường bản đồ google đang được giao nhau trong dự án IOS
- 17. .NET Xác định chuột là trên đường vẽ giữa hai điểm tùy ý
- 18. geoserver - Làm thế nào để vẽ một đường đo đạc đại diện cho vòng tròn lớn giữa hai điểm
- 19. Vẽ sơ đồ thanh trên bản đồ bằng ggplot2?
- 20. căn giữa bản đồ google dựa trên các giá trị dài của điểm đánh dấu lat
- 21. Làm cách nào để vẽ đường dẫn trên bản đồ bằng tệp kml?
- 22. Vẽ bản đồ google bằng ggplot trong R
- 23. API Google Maps - Nhận điểm dọc theo tuyến đường giữa vĩ độ/dài
- 24. Bản đồ Google được vẽ bằng polyline với các điểm được mã hóa
- 25. ggplot2 - khu vực bóng râm giữa hai đường thẳng đứng
- 26. Cách vẽ đường giữa hai địa chỉ trên Android
- 27. Nhiều Điểm đánh dấu trên Bản đồ Google
- 28. Cách tính khoảng cách từ một điểm đến một đoạn đường thẳng, trên một hình cầu?
- 29. Vẽ Bản đồ địa hình
- 30. Làm cách nào để vẽ các đường thẳng đứng trên biểu đồ Highcharts?
Bạn có muốn "đường thẳng" hoặc đường thẳng theo đường không? – geocodezip