Skip to content

Instantly share code, notes, and snippets.

@muyueh
Last active August 29, 2015 14:19
Show Gist options
  • Save muyueh/bce8a8b8520b04685230 to your computer and use it in GitHub Desktop.
Save muyueh/bce8a8b8520b04685230 to your computer and use it in GitHub Desktop.
Dark Map
var _, buildStack, newStack, buildMap, clr, pathLine, appendPath, setPath, blowBus, appendSVG, buildOverlay;
_ = require("prelude-ls");
buildStack = function(){
var index, build;
index = -1;
return build = function(){
var ctn;
ctn = d3.select("body").insert("div", ":first-child").append("div");
ctn.style({
"background-color": '#252525',
"height": "0px",
"width": "100%"
}).style({
"height": "600px"
});
return ctn.append("div").style({
"height": "600px"
});
};
};
newStack = buildStack();
buildMap = function(mapStyle, position, overlay){
var map;
map = new google.maps.Map(newStack().node(), {
zoom: position.zoom,
center: new google.maps.LatLng(position.lat, position.lng),
disableDefaultUI: true,
scrollwheel: false,
navigationControl: false,
mapTypeControl: false,
scaleControl: false,
draggable: false,
zoomControl: false,
disableDoubleClickZoom: true,
mapTypeControlOptions: {
mapTypeId: [google.maps.MapTypeId.ROADMAP, 'map_style']
}
});
google.maps.event.addListener(map, "bounds_changed", function(){
var bounds, northEast, southWest;
bounds = this.getBounds();
northEast = bounds.getNorthEast();
return southWest = bounds.getSouthWest();
});
map.mapTypes.set('map_style', mapStyle);
map.setMapTypeId('map_style');
if (overlay !== undefined) {
return overlay.setMap(map);
}
};
clr = {};
clr.red = "rgb(255, 0, 71)";
clr.brown = "rgb(255, 110d, 100)";
clr.green = "rgb(0,249,153)";
clr.blue = "rgb(104,126,255)";
clr.white = "rgb(226,211,255)";
clr.grey = "rgb(59,50,78)";
clr.purple = "rgb(164, 51, 216)";
pathLine = d3.svg.line().x(function(it){
return it[0];
}).y(function(it){
return it[1];
}).interpolate("cardinal");
appendPath = function(it){
return it.attr({
"d": function(it){
return pathLine(
it.list_coor);
}
}).style({
"fill": "none",
"stroke": function(it, i){
return clr.purple;
},
"stroke-width": "6px",
"mix-blend-mode": "screen",
"opacity": 1
});
};
setPath = function(it){
return it.attr({
"d": function(it){
return pathLine(
it.list_coor);
}
});
};
blowBus = function(it){
return it.style({
"opacity": 1
}).attr({
"stroke-dasharray": function(){
return 100 + " " + this.getTotalLength();
},
"stroke-dashoffset": function(){
return 100;
},
"shape-rendering": "geometricPrecision"
}).transition().ease('linear').duration(function(){
return this.getTotalLength() * 3;
}).delay(function(it, i){
return i * 2000 * Math.random();
}).attr({
"stroke-dashoffset": function(){
return -this.getTotalLength();
}
}).each("end", function(){
return d3.select(this).call(blowBus);
});
};
appendSVG = function(that, offset){
var svg, group;
svg = d3.select(that.getPanes().overlayMouseTarget).append("div").attr("class", "mapOverlay").append("svg");
group = svg.append("g").attr({
"class": "class",
"gPrints": "gPrints"
});
svg.attr({
"width": offset * 2,
"height": offset * 2
}).style({
"position": "absolute",
"top": -1 * offset + "px",
"left": -1 * offset + "px"
});
return group;
};
buildOverlay = function(pathData){
var pathOverlay, toMany;
pathOverlay = new google.maps.OverlayView();
buildOverlay.mapOffset = 4000;
toMany = function(it){
return _.concat(
[it, it, it]);
};
pathOverlay.onAdd = function(){
var gPrints;
gPrints = appendSVG(this, buildOverlay.mapOffset);
return pathOverlay.draw = function(){
var projection, lsMapXYPathsData, dtb, dt;
projection = this.getProjection();
buildOverlay.googleMapProjection = function(coordinates){
var googleCoordinates, pixelCoordinates;
googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0]);
pixelCoordinates = projection.fromLatLngToDivPixel(googleCoordinates);
return [pixelCoordinates.x + buildOverlay.mapOffset, pixelCoordinates.y + buildOverlay.mapOffset];
};
buildOverlay.cellOperation = function(cell){
var coor;
coor = buildOverlay.googleMapProjection([cell[0], cell[1]]);
return [coor[0], coor[1]];
};
lsMapXYPathsData = _.each(function(row){
return row.list_coor = _.map(function(it){
return buildOverlay.cellOperation(it);
})(
row.list_coor);
})(
pathData);
dtb = gPrints.selectAll(".busPathBase").data(lsMapXYPathsData);
dtb.enter().append("path").attr({
"class": "busPathBase"
}).call(appendPath);
dtb.call(setPath);
dt = gPrints.selectAll(".busPath").data(toMany(
lsMapXYPathsData));
dt.enter().append("path").attr({
"class": "busPath"
}).call(appendPath);
return dt.call(setPath).call(blowBus);
};
};
return pathOverlay;
};
_ = require "prelude-ls"
### a new stack
buildStack = ->
index = -1
build = ->
ctn = d3.select "body"
.insert "div", ":first-child"
.append "div"
### animation slide-in
ctn
.style {
"background-color": '#252525'
"height": "0px"
"width": "100%"
# "margin-top": "3px"
}
# .transition!
# .duration 3000
.style {
"height": "600px"
}
ctn
.append "div"
.style {
"height": "600px"
}
newStack = buildStack!
### a map
buildMap = (mapStyle, position, overlay)->
map = new google.maps.Map(newStack!.node!, {
zoom: position.zoom,
center: new google.maps.LatLng(position.lat, position.lng),
disableDefaultUI: true,
scrollwheel: false
navigationControl: false
mapTypeControl: false
scaleControl: false
draggable: false
zoomControl: false
disableDoubleClickZoom: true
mapTypeControlOptions:{
mapTypeId: [google.maps.MapTypeId.ROADMAP, 'map_style']
}
})
google.maps.event.addListener(map, "bounds_changed", ->
bounds = @getBounds!
northEast = bounds.getNorthEast!
southWest = bounds.getSouthWest!
# console.log [(southWest.lng! + northEast.lng!) / 2, (southWest.lat! + northEast.lat!) / 2]
)
map.mapTypes.set('map_style', mapStyle)
map.setMapTypeId('map_style')
if overlay is not undefined then overlay.setMap map
clr = {}
clr.red = "rgb(255, 0, 71)"
clr.brown = "rgb(255, 110d, 100)"
clr.green = "rgb(0,249,153)"
clr.blue = "rgb(104,126,255)"
clr.white = "rgb(226,211,255)"
clr.grey = "rgb(59,50,78)"
clr.purple = "rgb(164, 51, 216)"
pathLine = d3.svg.line!
.x -> it[0]
.y -> it[1]
.interpolate "cardinal"
appendPath = ->
it.attr {
"d": -> it.list_coor |> pathLine
}
.style {
"fill": "none"
"stroke": (it, i)-> clr.purple
"stroke-width": "6px" ### "10px" # "1px"
"mix-blend-mode": "screen" ## look great on safari
"opacity": 1
}
setPath = ->
it.attr {
"d": -> (it.list_coor |> pathLine)
}
blowBus = ->
it
.style {
"opacity": 1
}
.attr {
"stroke-dasharray": -> 100 + " " + @.getTotalLength!
"stroke-dashoffset": -> 100
"shape-rendering": "geometricPrecision"
}
.transition!
.ease 'linear'
.duration -> (@.getTotalLength! * 3)
.delay (it, i)-> i * 2000 * Math.random!
.attr {
"stroke-dashoffset": -> -@.getTotalLength!
### 0
}
# .transition!
# .duration 1000
# .style {
# "opacity": 0
# }
.each "end", ->
d3.select @
.call blowBus
appendSVG = (that, offset)->
svg = d3.select(that.getPanes!.overlayMouseTarget).append("div")
.attr("class", "mapOverlay")
.append "svg"
group = svg.append "g"
.attr {
"class" "gPrints"
}
svg
.attr {
"width": offset * 2
"height": offset * 2
}
.style {
"position": "absolute"
"top": -1 * offset + "px"
"left": -1 * offset + "px"
}
group
buildOverlay = (pathData)->
pathOverlay = new google.maps.OverlayView!
buildOverlay.mapOffset = 4000
toMany = ->
[it, it, it] |> _.concat
pathOverlay.onAdd = ->
gPrints = appendSVG @, buildOverlay.mapOffset
pathOverlay.draw = ->
projection = @getProjection!
buildOverlay.googleMapProjection = (coordinates)->
googleCoordinates = new google.maps.LatLng(coordinates[1], coordinates[0])
pixelCoordinates = projection.fromLatLngToDivPixel googleCoordinates
[pixelCoordinates.x + buildOverlay.mapOffset, pixelCoordinates.y + buildOverlay.mapOffset]
buildOverlay.cellOperation = (cell)->
coor = buildOverlay.googleMapProjection [cell[0], cell[1]] ### [lat, lng]
[coor[0], coor[1]]
lsMapXYPathsData = pathData |> _.each ((row)-> row.list_coor = (row.list_coor |> _.map (-> buildOverlay.cellOperation it ) ) )
dtb = gPrints.selectAll ".busPathBase"
.data lsMapXYPathsData
dtb
.enter!
.append "path"
.attr {
"class": "busPathBase"
}
.call appendPath
dtb
.call setPath
dt = gPrints.selectAll ".busPath"
.data (lsMapXYPathsData |> toMany)
dt
.enter!
.append "path"
.attr {
"class": "busPath"
}
# .call pathMouseAction
.call appendPath
dt
.call setPath
.call blowBus
pathOverlay
<!DOCTYPE html>
<html>
<head>
<title>Dark Map</title>
<!-- including from header - start -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js"></script>
<script type="text/javascript" src="//muyueh.com/30/lib/js/prelude-browser-min.js"></script>
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-36523378-1', 'auto');
ga('send', 'pageview');
</script>
<!-- including from header - end -->
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false"></script>
</head>
<body>
<script type="text/javascript" src="./common.js"></script>
<script type="text/javascript" src="./index.js"></script>
</body>
</html>
doctype html
html
head
title Dark Map
include ../../header
script(type="text/javascript", src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false")
body
script(type="text/javascript", src="./common.js")
script(type="text/javascript", src="./index.js")
var _, taipeiPosition, darkMapStyle;
_ = require("prelude-ls");
taipeiPosition = {
zoom: 13,
lat: 25.03930553101857,
lng: 121.53578906738278
};
darkMapStyle = new google.maps.StyledMapType([
{
"featureType": "all",
"elementType": "all",
"stylers": [
{
"visibility": "off"
}, {
"color": '#000000'
}, {
"saturation": -100
}, {
"lightness": 33
}, {
"gamma": 0.5
}
]
}, {
"featureType": "landscape.natural",
"elementType": "all",
"stylers": [{
"visibility": "on"
}]
}, {
"featureType": "water",
"elementType": "geometry.fill",
"stylers": [
{
"visibility": "on"
}, {
"color": '#3887be'
}
]
}
], {
name: "Styled Map"
});
d3.json("../cc14c1a8ee27a3072ce2/one_bus_track.json", function(err, jsonData){
var pathData;
pathData = _.take(1)(
_.drop(1)(
_.map(function(it){
return {
"name": it.properties.bad_chines,
"list_coor": it.geometry.coordinates
};
})(
jsonData.features)));
return buildMap(darkMapStyle, taipeiPosition);
});
_ = require "prelude-ls"
taipeiPosition = {zoom: 13, lat: 25.03930553101857, lng: 121.53578906738278}
darkMapStyle = new google.maps.StyledMapType([
{"featureType":"all","elementType":"all","stylers":[{"visibility":"off"},{"color":'#000000'},{"saturation":-100},{"lightness":33},{"gamma":0.5}]},
{"featureType":"landscape.natural","elementType":"all","stylers":[{"visibility":"on"}]},
{"featureType":"water","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":'#3887be'}]},
],
{name: "Styled Map"}
)
err, jsonData <- d3.json "../cc14c1a8ee27a3072ce2/one_bus_track.json"
pathData = jsonData.features
|> _.map (-> {"name": it.properties.bad_chines , "list_coor": (it.geometry.coordinates ) } )
|> _.drop 1 |> _.take 1
buildMap darkMapStyle, taipeiPosition
# , (pathData |> buildOverlay)
Display the source blob
Display the rendered blob
Raw
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"bad_chines":"內科通勤專車5","_id":546395},"geometry":{"type":"LineString","coordinates":[[121.5650411756,25.041076481462],[121.56582544391,25.041057429997],[121.56608827816,25.041000899292],[121.56612983406,25.040811125191],[121.56608,25.039305771944],[121.56592505955,25.039194612287],[121.56362186593,25.039221305828],[121.56347472184,25.039348992471],[121.56351182665,25.039714614251],[121.5636189007,25.040025458003],[121.56471041298,25.041860304476],[121.5664669652,25.04473737906],[121.56958813026,25.049861436234],[121.56994997665,25.050450846182],[121.57031,25.050878],[121.5704,25.050993],[121.57049,25.0511],[121.5706,25.051201],[121.5707,25.051297],[121.57081,25.05139],[121.57093,25.05147],[121.571047,25.051553],[121.57117,25.05163],[121.5713,25.0517],[121.57915,25.05596],[121.57953,25.056018],[121.581466,25.057163],[121.57811,25.06186],[121.58248,25.064382],[121.5828,25.064615],[121.58334,25.064849],[121.58392,25.065015],[121.58459,25.06507],[121.58523,25.064927],[121.58568,25.064854],[121.58579,25.06535],[121.58579,25.06578],[121.58558,25.066817],[121.58515,25.06778],[121.58465,25.06847],[121.58428,25.06892],[121.58156,25.07146],[121.57934,25.0736],[121.57485,25.076489],[121.574422,25.076671],[121.56826608082,25.07939723629],[121.56605874966,25.080400826776],[121.56504338967,25.080858852945],[121.5649982409,25.080749696845],[121.56462845065,25.079595907362]]}}
,
{"type":"Feature","properties":{"bad_chines":"672區間車","_id":546392},"geometry":{"type":"LineString","coordinates":[[121.5342,24.99327],[121.53323,24.99188],[121.53398,24.99103],[121.53403,24.99078],[121.53387,24.98822],[121.53383,24.98798],[121.53359,24.98804],[121.53338,24.98819],[121.53215,24.98861],[121.52658,24.99014],[121.52577,24.9903],[121.52215,24.99076],[121.52168,24.99087],[121.51919,24.99176],[121.51832,24.992],[121.5118,24.99275],[121.5119,24.99308],[121.5122,24.99354],[121.51368,24.99525],[121.51586,24.99777],[121.51679,24.99869],[121.51733,24.99933],[121.51765,24.9999],[121.51769,25.00014],[121.51844,25.00019],[121.51918,25.00018],[121.52188,24.99977],[121.5227,25.00269],[121.52292,25.0034],[121.5242,25.00415],[121.52458,25.00432],[121.52783,25.00619],[121.53152,25.00821],[121.53314,25.00922],[121.53542,25.01053],[121.53598,25.0108],[121.53638,25.01088],[121.53692,25.01098],[121.53703,25.01091],[121.53728,25.0109],[121.53746,25.01109],[121.53748,25.01124],[121.53741,25.01138],[121.53728,25.01143],[121.53712,25.01142],[121.53633,25.01282],[121.53561,25.01363],[121.53459,25.0146],[121.53278,25.01639],[121.53326,25.01675],[121.53336,25.01697],[121.5345,25.02225],[121.53681,25.02227],[121.5371,25.02225],[121.53745,25.02214],[121.53769,25.02203],[121.53849,25.02147],[121.53895,25.02128],[121.53926,25.0212],[121.5396,25.02115],[121.54342,25.02102],[121.5439,25.02095],[121.54449,25.02079],[121.54489,25.02053],[121.54642,25.01907],[121.5462,25.01898],[121.54459,25.01761],[121.5425,25.01584],[121.54023,25.0139],[121.5394,25.01321],[121.53728,25.01143],[121.53699,25.01137],[121.5369,25.01129],[121.53688,25.01121],[121.53625,25.01107],[121.53575,25.01092],[121.53535,25.0107],[121.53457,25.01021],[121.5343,25.00998],[121.53192,25.00856],[121.5242,25.00415],[121.52265,25.00325],[121.52228,25.00294],[121.52228,25.00281],[121.5227,25.00269],[121.52188,24.99977],[121.51918,25.00018],[121.51844,25.00019],[121.51769,25.00014],[121.5181,25.00017],[121.51769,25.00014],[121.51765,24.9999],[121.51733,24.99933],[121.51679,24.99869],[121.51586,24.99777],[121.5122,24.99354],[121.5119,24.99308],[121.5118,24.99275],[121.51182,24.99251],[121.51791,24.99183],[121.51914,24.99153],[121.52118,24.9908],[121.52211,24.99053],[121.52575,24.9902],[121.52625,24.99011],[121.52783,24.9897],[121.53021,24.98908],[121.5323,24.98845],[121.53333,24.98807],[121.53383,24.98798],[121.53387,24.98822],[121.53403,24.99083],[121.53392,24.99112],[121.53394,24.99124],[121.53363,24.99168],[121.53363,24.99194],[121.53381,24.99231],[121.53434,24.9931]]}}
,
{"type":"Feature","properties":{"bad_chines":"552","_id":546398},"geometry":{"type":"LineString","coordinates":[[121.56611,25.041116],[121.56611,25.039157],[121.56342,25.039217],[121.56717,25.045657],[121.56946,25.04939],[121.56953,25.0495],[121.569601,25.04962],[121.56967,25.04973],[121.56973,25.04985],[121.569801,25.04997],[121.56986,25.050103],[121.569928,25.05023],[121.570022,25.050351],[121.570102,25.050476],[121.57018,25.0506],[121.57027,25.05072],[121.57036,25.050842],[121.57045,25.05096],[121.57054,25.051077],[121.57065,25.05118],[121.57076,25.051279],[121.57088,25.051367],[121.571,25.05145],[121.57112,25.051538],[121.57124,25.051612],[121.57137,25.051676],[121.5715,25.05173],[121.571633,25.051801],[121.571762,25.05186],[121.57189,25.05193],[121.57202,25.05199],[121.57214,25.052054],[121.572272,25.052114],[121.572399,25.052173],[121.57253,25.052232],[121.57265,25.05229],[121.57277,25.052351],[121.572882,25.052409],[121.57298,25.05247],[121.57309,25.052535],[121.57318,25.052586],[121.57326,25.052633],[121.57335,25.052679],[121.57342,25.05272],[121.57349,25.05276],[121.57355,25.052801],[121.57361,25.05284],[121.57366,25.05286],[121.573699,25.052882],[121.57372,25.052897],[121.57374,25.05291],[121.57375,25.052921],[121.57376,25.052937],[121.57377,25.052944],[121.57376,25.05295],[121.57377,25.052959],[121.57377,25.052967],[121.57377,25.052968],[121.57377,25.052971],[121.57378,25.05297],[121.57379,25.052985],[121.57381,25.05299],[121.57383,25.05301],[121.57386,25.05302],[121.57388,25.05304],[121.57393,25.05307],[121.57397,25.05309],[121.574024,25.053125],[121.57408,25.053148],[121.57414,25.053181],[121.5742,25.053215],[121.57426,25.053246],[121.57432,25.05328],[121.57439,25.053313],[121.57446,25.05335],[121.57452,25.053385],[121.574598,25.05342],[121.57467,25.053463],[121.57474,25.053508],[121.57481,25.053554],[121.57488,25.05359],[121.57495,25.05363],[121.57502,25.05366],[121.575103,25.053701],[121.57517,25.053744],[121.57524,25.053781],[121.57531,25.053818],[121.57538,25.053851],[121.57545,25.053893],[121.57551,25.053929],[121.57558,25.053965],[121.57565,25.054002],[121.5814,25.056953],[121.58144,25.057009],[121.58144,25.057057],[121.58144,25.05711],[121.58079,25.05826],[121.57978,25.05965],[121.57516,25.065755],[121.57513,25.065977],[121.575086,25.066061],[121.57505,25.066142],[121.57502,25.066226],[121.57499,25.066291],[121.57497,25.06635],[121.57495,25.066413],[121.57493,25.066464],[121.57492,25.06652],[121.57489,25.066566],[121.57488,25.06663],[121.57487,25.0667],[121.57485,25.066778],[121.574833,25.066858],[121.574726,25.066963],[121.5748,25.07065],[121.57469,25.071288],[121.57455,25.07165],[121.57428,25.072107],[121.574,25.07248],[121.573983,25.072688],[121.57393,25.07277],[121.57387,25.072839],[121.57381,25.07292],[121.57376,25.07299],[121.573699,25.073055],[121.57364,25.07312],[121.573568,25.07319],[121.57352,25.073252],[121.57346,25.0733],[121.57342,25.07335],[121.57338,25.073391],[121.57336,25.073406],[121.57335,25.07344],[121.57334,25.07345],[121.57333,25.07347],[121.57332,25.073483],[121.57331,25.073495],[121.5733,25.0735],[121.5733,25.073513],[121.5733,25.07352],[121.57329,25.07352],[121.57329,25.07353],[121.57326,25.07356],[121.57323,25.073588],[121.5732,25.073626],[121.57317,25.073662],[121.57314,25.073698],[121.57311,25.073735],[121.57307,25.073778],[121.57304,25.073824],[121.573,25.07387],[121.57297,25.07391],[121.572936,25.07395],[121.57291,25.07398],[121.5729,25.074009],[121.57288,25.074038],[121.57285,25.074069],[121.57282,25.074104],[121.57281,25.074121],[121.5728,25.074127],[121.57278,25.074132],[121.57277,25.07413],[121.572753,25.07413],[121.57274,25.07415],[121.57272,25.074177],[121.5727,25.0742],[121.57267,25.07423],[121.57122,25.076344],[121.57116,25.076403],[121.57108,25.076553],[121.570868,25.07678],[121.57079,25.07682],[121.5707,25.076878],[121.57057,25.07697],[121.57047,25.07704],[121.57038,25.07708],[121.5695,25.077331],[121.56799,25.077749],[121.56436,25.0788],[121.56508,25.0808],[121.56724,25.079847],[121.57252,25.077459],[121.57372,25.076955],[121.57473,25.076447],[121.57595,25.075763],[121.57914,25.073722],[121.58046,25.07428],[121.58094,25.074497],[121.581559,25.07474],[121.582328,25.074954],[121.5836,25.07499],[121.58363,25.07854],[121.579623,25.07851],[121.57963,25.078801],[121.57998,25.078888],[121.58383,25.080179],[121.584793,25.08071],[121.58504,25.080756],[121.59036,25.08201],[121.590759,25.080651],[121.5916,25.081522],[121.59518,25.08426],[121.59424,25.084688],[121.59382,25.08478],[121.59375,25.084799],[121.59367,25.08481],[121.59327,25.084885],[121.593185,25.0849],[121.593095,25.084925],[121.59301,25.08495],[121.59294,25.084967],[121.59287,25.08498],[121.592,25.085201],[121.59025,25.08583],[121.589189,25.08629],[121.58854,25.08669],[121.58717,25.08795],[121.58665,25.088541],[121.58666,25.088629],[121.58665,25.08867],[121.58665,25.088709],[121.58666,25.088748],[121.58666,25.088776],[121.58666,25.088807],[121.58665,25.08884],[121.5866,25.08885],[121.58656,25.088861],[121.58653,25.088871],[121.58649,25.088855],[121.58643,25.08884],[121.58641,25.08882],[121.5864,25.088802],[121.5864,25.08878],[121.58639,25.088762],[121.5864,25.088752],[121.58641,25.088733],[121.58642,25.088717],[121.58645,25.08867],[121.58647,25.088626],[121.58649,25.08859],[121.58651,25.08855],[121.58662,25.08853],[121.587162,25.0879],[121.58851,25.08664],[121.58922,25.086226],[121.590227,25.08578],[121.59196,25.085148],[121.59284,25.084939],[121.59288,25.08492],[121.59289,25.08491],[121.5929,25.084894],[121.59293,25.084887],[121.59296,25.08488],[121.59298,25.08488],[121.59299,25.084881],[121.59301,25.084882],[121.593019,25.084883],[121.59302,25.08488],[121.59303,25.084887],[121.59303,25.084889],[121.59303,25.084893],[121.59303,25.084896],[121.59303,25.084899],[121.59303,25.0849],[121.59304,25.0849],[121.593038,25.0849],[121.59304,25.084904],[121.59304,25.0849],[121.593044,25.0849],[121.59305,25.0849],[121.593047,25.0849],[121.59305,25.0849],[121.59306,25.0849],[121.59307,25.0849],[121.59311,25.08489],[121.59315,25.08488],[121.59319,25.084876],[121.59324,25.08485],[121.59329,25.084838],[121.59336,25.084836],[121.593818,25.084761],[121.590354,25.082079],[121.58505,25.080824],[121.584844,25.080777],[121.584756,25.080726],[121.58383,25.08021],[121.57997,25.078915],[121.57900078567,25.078619138804],[121.5768845371,25.079411346948],[121.57656835277,25.078993918485],[121.57675591975,25.078930818694],[121.57697028201,25.078955087832],[121.5771310537,25.079061871967],[121.57721271885,25.079202885889],[121.57879504075,25.078576488557],[121.57958,25.07844],[121.583571,25.07848],[121.583533,25.075044],[121.58232,25.07501],[121.58153,25.07479],[121.58091,25.07452],[121.58042,25.0743],[121.57914,25.07378],[121.57603,25.075792],[121.57477,25.076508],[121.57373,25.077022],[121.57257,25.07751],[121.56729,25.07992],[121.565035,25.080873],[121.56425,25.078693],[121.56796,25.07748],[121.56947,25.077106],[121.56957,25.077077],[121.56968,25.077048],[121.569784,25.07702],[121.56988,25.07699],[121.56998,25.076958],[121.57008,25.076926],[121.57017,25.076892],[121.57027,25.076852],[121.57036,25.076813],[121.57044,25.07676],[121.57052,25.07672],[121.57061,25.07666],[121.57069,25.07661],[121.57076,25.07655],[121.57084,25.07648],[121.57091,25.076411],[121.57107,25.076307],[121.57244,25.07425],[121.57249,25.074167],[121.57253,25.074091],[121.57258,25.074007],[121.572623,25.07392],[121.572666,25.07384],[121.57271,25.073759],[121.57274,25.07367],[121.57277,25.073581],[121.57281,25.073496],[121.57286,25.07341],[121.57289,25.073328],[121.57292,25.07325],[121.57294,25.073161],[121.57296,25.073086],[121.57298,25.07302],[121.573,25.072952],[121.57302,25.07288],[121.57304,25.07282],[121.573069,25.07277],[121.573159,25.07276],[121.57369,25.07262],[121.57383,25.07252],[121.57414,25.07206],[121.57442,25.071626],[121.57461,25.071215],[121.57469,25.070678],[121.57463,25.067012],[121.574643,25.06686],[121.57466,25.06677],[121.57468,25.066674],[121.5747,25.066582],[121.57472,25.066494],[121.57475,25.0664],[121.57478,25.06631],[121.57481,25.066213],[121.57484,25.066123],[121.574878,25.06604],[121.57492,25.06595],[121.57499,25.065758],[121.57967,25.05959],[121.580662,25.05825],[121.58128,25.05711],[121.5756,25.05403],[121.57548,25.053978],[121.57537,25.053925],[121.57524,25.05387],[121.57511,25.05381],[121.57499,25.05374],[121.57486,25.053673],[121.574729,25.05361],[121.5746,25.053543],[121.57447,25.053478],[121.57433,25.053412],[121.57419,25.053345],[121.57406,25.053276],[121.57393,25.053205],[121.57379,25.05314],[121.57366,25.05307],[121.57353,25.053],[121.57341,25.052939],[121.57328,25.05287],[121.57315,25.052803],[121.57303,25.052736],[121.5729,25.052666],[121.57278,25.052595],[121.57265,25.052521],[121.57253,25.052445],[121.5724,25.05238],[121.572264,25.05231],[121.572131,25.05223],[121.57199,25.052167],[121.57186,25.05209],[121.57173,25.052023],[121.571602,25.051953],[121.57147,25.051879],[121.57134,25.05181],[121.57121,25.05174],[121.571087,25.05166],[121.57096,25.051588],[121.570827,25.051504],[121.5707,25.05141],[121.57059,25.051307],[121.57049,25.051205],[121.57041,25.0511],[121.57034,25.050991],[121.57026,25.05088],[121.57019,25.05077],[121.57012,25.050664],[121.57006,25.05055],[121.56998,25.05043],[121.569883,25.05033],[121.56981,25.05024],[121.56972,25.050132],[121.56965,25.05001],[121.56958,25.049889],[121.569517,25.049766],[121.56942,25.049641],[121.56935,25.04952],[121.56928,25.049398],[121.56707,25.04565],[121.56434,25.04115],[121.5661,25.041131]]}}
,
{"type":"Feature","properties":{"bad_chines":"604","_id":546396},"geometry":{"type":"LineString","coordinates":[[121.45990504875,24.994512617111],[121.45961880836,24.994495250424],[121.45961089867,24.993830867885],[121.45962859415,24.993592512434],[121.45975420831,24.993261097631],[121.4599415726,24.992953991591],[121.46036491667,24.992429985061],[121.4608448069,24.991877739365],[121.46115807161,24.991490452031],[121.46147094024,24.991511111493],[121.46198406568,24.991489433448],[121.46229457479,24.991498563489],[121.46258268689,24.991543524709],[121.46276645807,24.991633419924],[121.46408532002,24.992382373202],[121.46510758707,24.992980927514],[121.46579241408,24.993419303589],[121.46621053679,24.993742285713],[121.46637349487,24.993919518554],[121.46675708785,24.994274730178],[121.46697747441,24.994534263618],[121.46715428773,24.994768068481],[121.46736457572,24.995149240381],[121.46756084494,24.99567281693],[121.46781608461,24.9964345824],[121.46803718195,24.997465777708],[121.46826438184,24.998403753378],[121.46836952056,24.998840586185],[121.46850346855,24.999284524403],[121.46875668614,25.000347931429],[121.46887377926,25.000940278058],[121.46887505035,25.001484376753],[121.46881914254,25.002674350908],[121.46879899802,25.003473964401],[121.47072090169,25.004239018884],[121.47117770025,25.004407020314],[121.47208015704,25.004767390985],[121.47194114532,25.005877556054],[121.47187070203,25.006436818557],[121.47261432548,25.006301801938],[121.47219086378,25.007176333123],[121.47199504701,25.007542803147],[121.47160079969,25.008414084105],[121.47109208543,25.009487671198],[121.47088895136,25.009867366985],[121.47067549826,25.010295502283],[121.4704967956,25.010595798498],[121.46981860642,25.011580379647],[121.46964820645,25.01179079912],[121.46909292642,25.012678430959],[121.4686983861,25.013264309114],[121.46987455739,25.013864398048],[121.47190499802,25.014824345413],[121.47313696669,25.014022855233],[121.47455447703,25.013058139905],[121.4753539684,25.012613102865],[121.47658476741,25.011910379255],[121.47678476194,25.011948606322],[121.47700671357,25.012083344843],[121.47677205235,25.012217235881],[121.47588992642,25.012960620617],[121.47518936379,25.013644315071],[121.4745914788,25.014245751136],[121.4735346163,25.01555],[121.47338945728,25.015811651552],[121.4733779037,25.016129581795],[121.47254630617,25.017164887116],[121.47170556246,25.018201985627],[121.47090507358,25.019262346343],[121.47006592247,25.020443],[121.46981836396,25.020518033363],[121.47093687134,25.02106629451],[121.47116319685,25.021192065689],[121.47153508543,25.021542372889],[121.47188362419,25.022090600618],[121.47190897536,25.02254559543],[121.47197009374,25.0228317671],[121.47218,25.0231],[121.47242746123,25.02326523962],[121.47282236246,25.023388010499],[121.47356753584,25.023380584604],[121.4741264252,25.023342147312],[121.47529,25.02347],[121.47561837186,25.023589868126],[121.47593219692,25.023754945368],[121.47737966492,25.02490175491],[121.47769927099,25.025091877397],[121.47829243046,25.025363176977],[121.47887876938,25.02552358691],[121.47908898873,25.025585220388],[121.47930746123,25.025679635972],[121.48027384889,25.026240190212],[121.48064977531,25.026446380441],[121.48092977136,25.026679983715],[121.48130029164,25.026923711458],[121.48159440193,25.027079765993],[121.48208276543,25.027244201809],[121.48282411359,25.027581615054],[121.48399290865,25.027936793517],[121.48425,25.028023890709],[121.48521637383,25.028625761224],[121.4857448796,25.028961185516],[121.48723946166,25.029807139485],[121.48825184296,25.030415222457],[121.48859375556,25.030535539078],[121.48888277746,25.030576054306],[121.48910029827,25.030588903831],[121.48949894264,25.030514332836],[121.48981538765,25.030425204346],[121.49031653799,25.030118920675],[121.49139401619,25.029143066459],[121.49179576346,25.028674951542],[121.49209756739,25.028508030433],[121.49238769133,25.028444023507],[121.49299937778,25.028474409262],[121.49438355422,25.028668957922],[121.49519809514,25.028759602199],[121.49556106766,25.028665380615],[121.49571068988,25.028604680437],[121.49582384691,25.028588838424],[121.49598786198,25.028618766881],[121.49610846198,25.028682682563],[121.49623677254,25.028862841592],[121.49638872323,25.029013339944],[121.49733337778,25.029243206447],[121.49904228628,25.029301664567],[121.50029818666,25.029352838925],[121.5006363042,25.029360187403],[121.50124245658,25.029499959857],[121.50232521831,25.029645214556],[121.50324627176,25.029835023361],[121.50415453574,25.029981527276],[121.50415652938,25.030432392156],[121.50415094279,25.031173842253],[121.50418626467,25.031344427641],[121.5047903848,25.032454793824],[121.50504248234,25.032915000736],[121.50530907161,25.033406111272],[121.50555149166,25.033822781553],[121.50628731407,25.035095269238],[121.50627469383,25.035191713261],[121.5063584969,25.035347187044],[121.50660953679,25.036048073538],[121.50685746321,25.037096974571],[121.50806935461,25.036613048824],[121.5089532885,25.036256151502],[121.50962606473,25.035970057021],[121.51064569594,25.035579427606],[121.51079536198,25.035495775968],[121.511151,25.035385],[121.51229567013,25.035103825177],[121.51397715506,25.034893508672],[121.51522123457,25.03473916053],[121.51532253325,25.035348353336],[121.5152393978,25.035480261379],[121.51505068515,25.035565071108],[121.51509738173,25.036707156322],[121.51513023062,25.037908456034],[121.51520560642,25.038349616742],[121.51531867996,25.038660580727],[121.51610968198,25.041341334335],[121.51663038826,25.043212523928],[121.51713730222,25.045019623281],[121.51909469936,25.044553565746],[121.5211956163,25.044061939412],[121.52301545728,25.043602696501],[121.52323484494,25.044447412102],[121.52364022469,25.045835939871],[121.52381746933,25.046368495975],[121.52419445728,25.047688089481],[121.52455353482,25.049069794071],[121.52464278468,25.04919123329],[121.52481404613,25.049879182533],[121.52508584889,25.050747558906],[121.52537558341,25.051820106837],[121.52540307358,25.052035734591],[121.52892,25.05201],[121.53205931802,25.051963118068],[121.53226306963,25.051932059536],[121.53383343151,25.051927052604],[121.53479664394,25.051950294656],[121.53703195552,25.051924265385],[121.53972534172,25.051873882914],[121.540476059,25.051852624116],[121.54208973452,25.051835967639],[121.54331088232,25.051798098073],[121.54573262419,25.051748588284],[121.54749835357,25.051652618363],[121.54924130124,25.051653754194],[121.55256575951,25.051608147241],[121.55511531802,25.051556],[121.55639668931,25.051505445172],[121.55796789855,25.051482131068],[121.5608030607,25.051408235739],[121.56383007753,25.051346776623],[121.56386815757,25.052001627663],[121.56387045052,25.052492102502],[121.56390869778,25.0529904372],[121.56389100395,25.054159945072],[121.56373112833,25.055735494104],[121.56369413785,25.056226403357],[121.56362587649,25.056727754023],[121.56363438765,25.056937616919],[121.56350475951,25.058564759086],[121.56368222469,25.058673439743],[121.56379846464,25.058887882946],[121.56601777531,25.059034056687],[121.5684843781,25.059228713042],[121.56860127767,25.05925929949],[121.56908000395,25.059300200397],[121.56890620354,25.060239618876],[121.56872946913,25.061379982383],[121.56863,25.06194],[121.56847181402,25.062803646089],[121.56832981734,25.063713195072],[121.56806515506,25.065272550878],[121.56797438765,25.065837041637],[121.56797659202,25.066112647116],[121.56801886469,25.066438753309],[121.56777939555,25.06643],[121.56588315506,25.06607838355],[121.56546314409,25.06594660284],[121.56564130617,25.064743917224],[121.56582429432,25.063544022112],[121.56592011485,25.06311907384],[121.56604246518,25.0626932485],[121.56632618735,25.061743344743],[121.56648570045,25.061379647475],[121.56676815611,25.060933582614],[121.56772496751,25.059922112861],[121.56833469779,25.059275871326],[121.5659796446,25.059111229658],[121.56382068988,25.05898741134],[121.56368346913,25.059167830092],[121.56347466873,25.0592735599],[121.56324330617,25.059268120739],[121.56305493037,25.059133496323],[121.56298692642,25.058920404207],[121.5630337835,25.058727979182],[121.56323508938,25.058582914818],[121.56340184889,25.058562234086],[121.56348610394,25.057469422288],[121.56350384099,25.056979148575],[121.56357074006,25.056746264534],[121.56365821454,25.056213273395],[121.56369237534,25.055746324634],[121.56384873565,25.054151227536],[121.5638626805,25.052978233123],[121.56382473615,25.052498106731],[121.56382640267,25.052023881931],[121.56379323654,25.051483823461],[121.56081227312,25.051570822859],[121.55992479683,25.051562548831],[121.5591890575,25.051585064255],[121.55727813269,25.051647777476],[121.55508758616,25.051687675523],[121.55259391852,25.051739675452],[121.55146410156,25.051767658354],[121.54932299222,25.051805847361],[121.54880257969,25.051806524895],[121.54759604752,25.05181839283],[121.54544441633,25.051900381533],[121.5448501959,25.051902203117],[121.54422733569,25.051933458208],[121.54346669881,25.051929469358],[121.54207528472,25.051955974394],[121.53981763999,25.052000676084],[121.536613323,25.052097234057],[121.53480959406,25.052078676055],[121.53328138765,25.052108058494],[121.53023535108,25.052142116979],[121.52948771582,25.052126234698],[121.52539708366,25.052180383905],[121.52274859509,25.052303468911],[121.52246,25.052335968294],[121.5221763995,25.051367440091],[121.5214924177,25.049907605095],[121.52055730617,25.047975013954],[121.51996473661,25.046763088205],[121.51951744149,25.045798639297],[121.51514784785,25.046859607765],[121.51200908938,25.047636322445],[121.51166313536,25.047797912403],[121.51145531012,25.047991148942],[121.51111119061,25.048151647622],[121.51064809333,25.048243709532],[121.51019686915,25.047875949185],[121.50995966904,25.047621182933],[121.50967008572,25.047201134459],[121.50882962419,25.044308527364],[121.50830300033,25.042483106187],[121.5077590364,25.040587839436],[121.50735984099,25.03929046386],[121.50687315506,25.037584431819],[121.50667612096,25.037185727072],[121.50643069301,25.03609194897],[121.50613215901,25.035279426458],[121.50589806766,25.034914716642],[121.50558383704,25.034596858115],[121.5057075085,25.034402598624],[121.50566346123,25.034143207311],[121.50550784576,25.033841256586],[121.5052615345,25.033411072186],[121.50501067967,25.032944898529],[121.50475874402,25.032475140976],[121.50414829058,25.031339778925],[121.50410749319,25.031171655212],[121.50412205258,25.030420647084],[121.50410614716,25.030109217898],[121.50271713208,25.02985366047],[121.50229192829,25.029793246764],[121.50066697038,25.029485761358],[121.50008649772,25.029449700535],[121.49948558443,25.029433935018],[121.49899347074,25.029403128373],[121.4973638693,25.029343809169],[121.49649030987,25.029163625204],[121.49628702925,25.029094399457],[121.49597917828,25.028753578233],[121.49584837544,25.02874912191],[121.49560423407,25.028828594598],[121.49518918969,25.028895261312],[121.49435331386,25.028782270029],[121.49295402081,25.02859311383],[121.49240057257,25.028542902072],[121.49220110815,25.028603555888],[121.4919857037,25.028706316015],[121.49185092839,25.028824064583],[121.49151020245,25.029183671869],[121.49040488576,25.030165676025],[121.49012225826,25.030377472835],[121.48948653259,25.030615464745],[121.48910914519,25.030674396795],[121.48892063012,25.030672080129],[121.48856370498,25.030619777383],[121.48813409346,25.030434944276],[121.48717902021,25.029871486347],[121.48567824068,25.029017794614],[121.48516907459,25.028677318931],[121.48422876346,25.028107271248],[121.48396330176,25.027999163603],[121.48277647171,25.027627482559],[121.48205198952,25.027331359889],[121.48155779245,25.027160367248],[121.48075543401,25.026689418624],[121.48062566021,25.02668191768],[121.47980834172,25.026260045031],[121.47932785898,25.02595533006],[121.47902178715,25.025797283966],[121.47823662419,25.025614370112],[121.478070799,25.025608838502],[121.47725805504,25.025144208065],[121.47651055464,25.024507200075],[121.47563540744,25.023797049933],[121.47546538637,25.023648326373],[121.47521473769,25.023564871728],[121.47416153534,25.023463679489],[121.47359929064,25.023482289138],[121.4727683916,25.023490197951],[121.47234685679,25.023358330129],[121.47207762419,25.023154090738],[121.4718959732,25.022919906237],[121.47178191852,25.022637272817],[121.47174808148,25.022113479607],[121.47123044939,25.021446173399],[121.47101785284,25.021271819669],[121.47063546123,25.021055339901],[121.46965591062,25.02058006673],[121.46970491852,25.020356066803],[121.46976251112,25.020008921121],[121.47015174878,25.019445738803],[121.47061223654,25.018821468117],[121.47124510178,25.018029278898],[121.47224233236,25.016751871702],[121.47276244544,25.016033410591],[121.47283606568,25.015914033976],[121.47293391852,25.01573631447],[121.47309059007,25.015431735804],[121.47268,25.015219],[121.47204577136,25.014950895487],[121.47191184296,25.014871982945],[121.46984009263,25.013900310518],[121.46868868517,25.013317973939],[121.46857002803,25.01324241662],[121.46897722469,25.012638465833],[121.4695933091,25.011778944993],[121.46978083704,25.011560500193],[121.47045337905,25.010585760281],[121.47063648452,25.010283017019],[121.47085973429,25.009818832408],[121.4710584491,25.009447849408],[121.47155918942,25.008404676652],[121.47195190842,25.007525141995],[121.47212642396,25.007186121462],[121.47248330868,25.006459571651],[121.47181945728,25.006572642907],[121.47189804061,25.005857889486],[121.47203269383,25.004795562675],[121.47117746326,25.004446116769],[121.47071348113,25.004278478627],[121.46876137383,25.003489741331],[121.46877584296,25.002679900665],[121.46883723259,25.00147713196],[121.46883296727,25.000947845952],[121.4687180834,25.000348890755],[121.46846985028,24.999303767778],[121.46832818738,24.998855817756],[121.46823507358,24.998427124494],[121.46800976741,24.997492610852],[121.46778123062,24.996444457593],[121.46752293296,24.995672452801],[121.46733883569,24.995168505256],[121.467110655,24.99478903814],[121.46693695646,24.994545987725],[121.46673171185,24.994299228495],[121.46633725352,24.993937978179],[121.46619207753,24.993782963137],[121.46578392738,24.993456850653],[121.46509806849,24.993012932269],[121.46407953679,24.99242169632],[121.46275861185,24.991666542362],[121.46257677267,24.991580423192],[121.46229731012,24.991532433443],[121.46198744741,24.991524037161],[121.46140282717,24.991553904043],[121.46122045926,24.991657767804],[121.46087550468,24.991879287522],[121.46038023271,24.992454539893],[121.45996816997,24.992973856728],[121.45978044345,24.993275717962],[121.45965989427,24.993591852659],[121.45963795021,24.993830053176],[121.45965403736,24.99446464899],[121.45982624442,24.994467817625],[121.45992045364,24.994465703397]]}}
]}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment