javascript - 如何正确定位我的地图以正确设置折线?
问题描述
我实际上正在使用谷歌地图显示到不同地区的路线。但是,对于某些区域,折线显示不正确。它显示如下
我想展示一条从巨港到大谷的直线,但它在地图的两个不同侧面也采用了曲线。我可以知道如何正确定位地图,以使线条笔直而不弯曲,并且在一张地图中。
以下是我的代码
getLatLngOfAddress(data){
var geocoder = new google.maps.Geocoder();let latitude;let longitude;var startPoint; var endPoint;
var marker; var startCoordinates = []; var endCoordinates = []; var flightPlanCoordinates = [];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 2,
center: new google.maps.LatLng(40.4637, 3.7492),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
map.markers = [];
var lineSymbol = {
path: 'M 0,-1 0,1',
strokeOpacity: 0.5,
scale: 4
};
for(var i=0; i<data.length;i++){
let port_of_loading = data[i].port_of_loading;
let port_of_discharge = data[i].port_of_discharge
geocoder.geocode( { 'address': port_of_loading}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
}
startCoordinates.push({'lat': latitude, 'lng': longitude});
flightPlanCoordinates.push({'lat': latitude, 'lng': longitude, 'port_of_loading':port_of_loading});
startPoint = new google.maps.LatLng(latitude, longitude);
});
geocoder.geocode( { 'address': port_of_discharge}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
latitude = results[0].geometry.location.lat();
longitude = results[0].geometry.location.lng();
}
endCoordinates.push({'lat': latitude, 'lng': longitude});
flightPlanCoordinates.push({'lat': latitude, 'lng': longitude, 'port_of_discharge':port_of_discharge});
endPoint = new google.maps.LatLng(latitude, longitude);
for(var j=0; j<flightPlanCoordinates.length; j++){
marker = new google.maps.Marker({
position: new google.maps.LatLng(flightPlanCoordinates[j].lat, flightPlanCoordinates[j].lng),
map: map,
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(
'<span *ngIf="port_of_loading" class="info_content" ><strong> Port of Loading: '+flightPlanCoordinates[i].port_of_loading+'</strong>',
'<span *ngIf="port_of_discharge" class="info_content" ><strong> Port of Discharge: '+flightPlanCoordinates[i].port_of_discharge+'</strong>'
);
infowindow.open(map, marker);
}
})(marker, i));
var flightPath = new google.maps.Polyline({
path: [startPoint, endPoint],
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 0,
icons: [{
icon: lineSymbol,
offset: '0',
repeat: '20px'
}],
strokeWeight: 2
});
flightPath.setMap(map);
}
});
}
}
解决方案
geodesic: true
从您的折线中删除。
您应该在此处阅读有关球面几何概念的更多信息。
推荐阅读
- python - Python Turtle:光标没有移动
- ruby-on-rails - rails minitest 让我发疯 PG::UniqueViolation 错误
- node.js - 用 Jest 测试 GraphQL 解析器
- android - 优化代码 - 从数组创建自定义文本视图并赋值
- angular - Angular Firebasedatabase 错误无法读取未定义的属性“databaseURL”
- c# - 带有 78 个单选按钮的调查表单的 C# MySql 插入或更新命令语法
- android - Garmin 使用原生 android/iOS 应用程序通过 BLE 读取设备数据
- c++ - 剥离应用程序不需要的代码的 C++ 库
- python - 如何查看某个类是否存在于列表中
- reactjs - 无法使用 axios 发送身份验证标头