Khoảng một tuần trước, tôi gặp sự cố: trên bản đồ do Google cung cấp tùy chỉnh, các Đa giác của tôi sẽ không hiển thị, trong khi các điểm đánh dấu cho cùng tọa độ hoàn toàn ổn. Mặc cho những nỗ lực của tôi với API Google Maps, có vẻ như tôi không thể tìm thấy lý do.Làm thế nào một số LatLng có thể được sử dụng để đặt điểm đánh dấu trên bản đồ Google, nhưng không được vẽ một Đa giác?
Here is a link to a screenshot of the map. mũi tên màu tím và con số này là bổ sung của tôi, họ cho thấy:
- Các
google.maps.Marker
tôi có thể đặt ở các cạnh của "khu vực" của tôi. - Tạo phẩm được tạo bởi mã
google.maps.Polygon
. Nó có màu đỏ như mong đợi, nhưng hoàn toàn không đúng chỗ và lạ lùng.
Đây là một phần của mã nơi Markers và đa giác được tạo ra:
var regionData = tecMap.regions[r];
var regionMapMarkers = new google.maps.MVCArray();
for (c in regionData.coords) {
var point = projection.worldToMap(regionData.coords[c]);
debugRegionPoints.push(point);
var thisLatLng = projection.fromPointToLatLng(point);
debugRegionLatLngs.push(thisLatLng);
regionMapMarkers.push(thisLatLng);
}
regionMapMarkers.forEach(function(latLng, m){
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: '',
optimized: false
});
regionCorners.push(marker);
});
var paths = new google.maps.MVCArray();
paths.push(regionMapMarkers);
var region = new google.maps.Polygon({
fillColor: "#FF0000",
fillOpacity: 0.35,
map: map,
paths: paths,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2
});
regionPolys.push(region);
Nếu bạn đang băn khoăn về các mảng của mảng, đó là tất cả ngang bằng với các Google Maps Javascript API.
Nếu bạn muốn xem bản đồ và các tập lệnh có liên quan, bạn có thể find it here. Đoạn mã là trong Scripts/tectonicus.js
, bắt đầu từ dòng 659.
[Chỉnh sửa] Một số thông tin gỡ lỗi:
Nó có vẻ là một vấn đề rendering, không phải là một "tính toán" một. Từ bảng điều khiển firebug, trong bản đồ tôi liên kết, cả hai
regionPolys[0].getPath().getArray();
và
for (i in regionCorners) {console.log(regionCorners[i].getPosition())};
sẽ trở lại
P { Na=0.2, Oa=-22.5249097921875}
P { Na=-0.21702715474330336, Oa=-32.7277467}
P { Na=0.19466306397879407, Oa=-37.51230686484375}
P { Na=0.12889785332031245, Oa=-49.04594858671875}
Nếu tôi đúng, nó có nghĩa là họ có cùng một tọa độ, đó là ngang bằng với mã.
[Edit2] Những tiến bộ mới!
Dường như các vectơ có vấn đề hiển thị khi xử lý một phép chiếu tùy chỉnh, chẳng hạn như được sử dụng để hiển thị bản đồ Minecraft đẳng động này. (Được tạo bằng Tectonicus)
Sau khi nhận xét cuối cùng, tôi sẽ thêm vào mã trực tiếp được liên kết phía trên hai Mảng gỡ lỗi mới, debugRegionLatLngs
và debugRegionPoints
. Mã trên được cập nhật để bạn có thể xem những gì chúng chứa.
[Edit3] chiếu và tọa độ nghiên cứu
Crossing BicycleDude với tôi, nó bây giờ gần như chắc chắn rằng đó là dự báo tùy chỉnh mà xác tàu đa giác. Trên thực tế, có a possibly related bug in Google Maps' API.
Phép chiếu này được sử dụng vì bản đồ Minecraft có thể hầu như vô hạn và phải sử dụng gmap, bao quanh sau kinh độ 360 °.Cũng có liên quan là thực tế là các tọa độ ingame được trả về theo một cách isometric, trong khi gmaps mong đợi một cái gì đó giống như phép chiếu Mercator.
Tôi đã thử tinh chỉnh phép chiếu một chút nhưng không có kết quả thú vị nào cho đến thời điểm này.
Tôi tin rằng bạn đang sử dụng 'path' trong các thuộc tính đa giác, trong khi thực tế nó nên được' paths' Nếu không, nó sẽ giúp xem mã trực tiếp ở đâu đó. Chúc mừng, Andres – andresf
Tôi đã foudn một số dung lượng để tải lên bản sao của bản đồ và mã có liên quan. Liên kết nằm trong câu hỏi. Nếu có bất kỳ thử nghiệm nào bạn muốn tôi chạy, vui lòng hỏi. :) –
Bạn có thể đăng một mẫu nhỏ hơn một chút để tái tạo điều này hay ít nhất chỉ cho chúng tôi mã Google Maps trong mẫu của bạn? Tôi bị lạc trong tất cả các tệp JavaScript ... – bamnet