Tôi muốn thực hiện một tìm kiếm đơn giản trên Google Maps API v3 và nhận được kết quả là bản đồ với một đa giác màu như hình dưới đây:Google Maps - Nhận Polygon biên giới của vùng/khu phố
Tìm kiếm: Pinheiros, sào paulo
Tôi muốn thực hiện một tìm kiếm đơn giản trên Google Maps API v3 và nhận được kết quả là bản đồ với một đa giác màu như hình dưới đây:Google Maps - Nhận Polygon biên giới của vùng/khu phố
Tìm kiếm: Pinheiros, sào paulo
Câu trả lời ngắn gọn là: không có, API Google Maps không cung cấp chức năng đó. Một cách để thực hiện điều này là tìm dữ liệu không gian (đa giác) mà bạn đang inerested, tải nó vào cơ sở dữ liệu (lý tưởng hỗ trợ truy vấn không gian), và sau đó truy vấn cơ sở dữ liệu thông qua AJAX để thêm tính năng hình học dưới dạng KMLLayer vào bản đồ, cùng với chốt đẩy tương ứng.
Bạn có thể xem hoạt động này trên trang web tại funda.nl. Khi bạn chọn một thuộc tính riêng lẻ, nó cũng hiển thị Bản đồ Google trong đó đa giác được vẽ xung quanh vùng lân cận của thuộc tính được chọn.
Tôi nhận nó bằng cách sử dụng dữ liệu WikiMapia.
Các bước thực hiện:
F12
hoặc Ctrl+Shift+I
.Edit Poly
. Network
và lọc theo getPolygon
. Và đi đến Console
tab để thực hiện các chức năng: Wikimapia.Parser.Itiles.prototype.decodePolygon("Copyed text here");
Tôi sử dụng JSON.stringify
để chuyển đổi đối tượng trong JSON.
Ví dụ:
JSON.stringify(Wikimapia.Parser.Itiles.prototype.decodePolygon("-619402099;-109032887;02fe8953fffe5a000ae5fe379a000fedffd250000e40ffd6050007f7ffeff2001925ffd59b001f6fffdc310012dcffed10003b82ffd9b9005514ffc4520053d2ffc807000c92fff82dfffde7000e670005070012ef0009390021bf000572001358fffc3a001a57fffa210013c1ffff940036530008610022fc000284004732fff5f0001fb1fff2960013c1fff80800594efffde7002c72000f16004b5000204600416f0013b2002292"))
Đoạn mã trên sẽ trở về JSON này (thụt đầu dòng trong JsonFormatter):
{
"points":[
{
"lat":-10.9032887,
"lng":-61.9402099
},
{
"lat":-10.9032466,
"lng":-61.9306183
},
{
"lat":-10.8915629,
"lng":-61.9308972
},
{
"lat":-10.8903934,
"lng":-61.9313049
},
{
"lat":-10.8893188,
"lng":-61.9316697
},
{
"lat":-10.8889079,
"lng":-61.9318736
},
{
"lat":-10.8878227,
"lng":-61.9325173
},
{
"lat":-10.8869061,
"lng":-61.933322
},
{
"lat":-10.8864214,
"lng":-61.9338048
},
{
"lat":-10.8854416,
"lng":-61.9353282
},
{
"lat":-10.8839139,
"lng":-61.9375062
},
{
"lat":-10.8824811,
"lng":-61.939652
},
{
"lat":-10.8822809,
"lng":-61.9399738
},
{
"lat":-10.8826496,
"lng":-61.9399202
},
{
"lat":-10.8831343,
"lng":-61.9400489
},
{
"lat":-10.8839982,
"lng":-61.940285
},
{
"lat":-10.8844934,
"lng":-61.9404244
},
{
"lat":-10.8851677,
"lng":-61.9403279
},
{
"lat":-10.8856734,
"lng":-61.9401777
},
{
"lat":-10.8870641,
"lng":-61.940167
},
{
"lat":-10.8879597,
"lng":-61.9403815
},
{
"lat":-10.8897823,
"lng":-61.9404459
},
{
"lat":-10.8905936,
"lng":-61.9401884
},
{
"lat":-10.8910993,
"lng":-61.9398451
},
{
"lat":-10.8933855,
"lng":-61.9396412
},
{
"lat":-10.8945233,
"lng":-61.9395876
},
{
"lat":-10.8964513,
"lng":-61.9399738
},
{
"lat":-10.8981264,
"lng":-61.9408
},
{
"lat":-10.8990114,
"lng":-61.9413042
}
],
"bounds":{
"left":-61.9413042,
"bottom":-10.9032887,
"right":-61.9306183,
"top":-10.8822809,
"centerLatLng":null
}
}
Cuối cùng tôi sử dụng regex như regexr.com/3c5m2 này để biến JSON vào WKT. Tôi không sao chép toàn bộ JSON chỉ các đối tượng trong mảng "points"
trong Regex. Trên RegExr tôi sao chép văn bản được thay thế và dán vào POLYGON((pastehere))
.
Quan trọng! Sau khi áp dụng regex bạn cần phải lặp lại điểm đầu tiên ở điểm cuối cùng.
-61,956523060798645 -10,877613428213532, -61,95640504360199 -10,877718788854143, -61,956791281700134 -10,878393096072424, -61,95735991001129 -10,87805594265392, -61,95682346820831 -10,877339490373695, -61,956523060798645 -10,877613428213532
Sau đó, bạn sẽ có được một cái gì đó như này:
POLYGON((-61.956523060798645 -10.877613428213532,-61.95640504360199 -10.877718788854143,-61.956791281700134 -10.878393096072424,-61.95735991001129 -10.87805594265392,-61.95682346820831 -10.877339490373695,-61.956523060798645 -10.877613428213532))
Điều đó có thể được chèn vào cơ sở dữ liệu t mũ hỗ trợ WKT (như MySQL).
WikiMapia có API thì tất cả quy trình này có thể tự động, nhưng điều này có hiệu quả đối với tôi.
Yêu cầu tính năng cho [Google Maps Javascript API v3] (https://code.google.com/p/gmaps-api-issues/issues/detail?id=109) – geocodezip