рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдмрд╕реНрдЯреНрд░реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Yandex.Maps API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рдКрдкрд░ рджреА рдЧрдИ рддреАрди рддрд╕реНрд╡реАрд░реЛрдВ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ? рдмрд╛рдИрдВ рдУрд░ OpenStreetMap рд╕реЗ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдХреЗрдВрджреНрд░ рдкрд░ - рд╡рдВрд╢ рд╕реЗ рдПрдХ рдирдХреНрд╢рд╛ 2. рджрд╛рдИрдВ рдУрд░ - рдореЙрд╕реНрдХреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ Google рд╕реЗ рдПрдХ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдкрд░ рдЬрд╛рдоред рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдирдпрд╛ Yandex.Map рдПрдкреАрдЖрдИ, рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

рдПрдкреАрдЖрдИ 2.0 рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рд╕рдмреНрд╕рдЯреНрд░реЗрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП рдпреИрдВрдбреЗрдХреНрд╕ рдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐ OpenStreetMap рдФрд░ рдпреИрдВрдбреЗрдХреНрд╕ рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдкреАрдЖрдИ рд╕реЗ рд╕рдорд░реНрдерди рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИред

OpenStreetMap рдкрд░ рдЕрдкрдиреЗ рдкрд┐рдЬреНрдЬрд╛ рдбрд┐рд▓реАрд╡рд░реА рдХреНрд╖реЗрддреНрд░ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд░рд╛рдХреНрд╖рд╕ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдПрдХ рдФрд░ MMORPG рд░рдЦреЗрдВ? Yandex рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред Google рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ? рдХреБрдЫ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ!


рдЙрджрд╛рд╣рд░рдг 1. Yandex.Traffic + Google.Maps


рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг

var map = new ym.Map('map', { center: [55.744, 37.587], zoom: 12, type: null // -    "" . }, {}); var googleLayer = new ym.Layer('http://mt0.google.com/vt/lyrs=m@176000000&hl=ru&%c', { projection: ym.projection.sphericalMercator, //    Google. tileTransparent: true }); map.layers.add(googleLayer); map.controls.add(new ym.control.TrafficControl({ shown: true }), { left: 5, top: 5 }); 

рд╣рдордиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рд╣реИ, рдЙрд╕реЗ рдмрддрд╛рдПрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓реЗрдпрд░ рдХреНрд▓рд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рдЗрд╕рдХреА рдорджрдж рд╕реЗ рд╣реИ рдХрд┐ рдирдП рдореИрдк рд▓реЗрдпрд░реНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рдЯрд╛рдЗрд▓ рдпреВрдЖрд░рдПрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкреНрд░рдХреНрд╖реЗрдкрдг рд╡рд┐рдХрд▓реНрдк рд░реБрдЪрд┐ рдХрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Yandex.Maps API WGS 84 рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ OSM рдФрд░ Google рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧреЛрд▓рд╛рдХрд╛рд░ Mercator рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдШрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдиреЗрддреНрд░рд╣реАрди рдпрд╣ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреА рдкрд░рдд рдкрд░ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 2. OpenStreetMap + рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдПрдкреАрдЖрдИ Yandex.Maps


рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг

  var map = new ym.Map('map', { center: [59.947, 30.325], zoom: 13, type: null // -    "" . }, {}); var osmLayer = new ym.Layer('http://otile%d.mqcdn.com/tiles/1.0.0/osm/%z/%x/%y.png', { projection: ym.projection.sphericalMercator, //    OSM tileTransparent: true }); map.layers.add(osmLayer); var train = new ym.Placemark([59.928815, 30.362311], { hintContent: " " }, { preset: "twirl#trainIcon" }) map.geoObjects.add(train); var pizza = new ym.Placemark([59.954327, 30.30698], { balloonContent: "" }, { preset: "twirl#cafeIcon" }) map.geoObjects.add(pizza); var area = new ym.Circle([[59.954327, 30.30698], 1400], { hintContent: " " }, { strokeColor: "#7C444399", strokeWidth: 2, fillColor: "#FFFFFF66", hintHideTimeout: 100 }); area.events.add("mouseenter", function(e) { this.options.set({ strokeColor: "#7C4443BB", strokeWidth: 4, fillColor: "#FFFFFF99" }) }, area); area.events.add("mouseleave", function(e) { this.options.set({ strokeColor: "#7C444399", strokeWidth: 2, fillColor: "#FFFFFF66" }) }, area); var geometry = ym.geometry.LineString.fromEncodedCoordinates("-nCSA99KzwFdBwAA0v3__2kBAABk-___" + "SgYAAKHO__8bEQAAQHX__y0BAAB_____8gIAAFcBAAAREAAAXej__-EEAAAo_v__mwIAANH8__9zAwAAdfj__" + "wAJAACBAAAAbgEAAK0BAAAaAgAA2wMAAKAEAAB_____VgAAAAoHAAACAQAArAAAAHcFAAAl_P__" + "3gMAAAAAAAAyAwAA1wAAAMYCAACtAQAAcAIAAFkCAAA="); //    var line = new ym.Polyline(geometry, {}, { strokeWidth: 2, strokeStyle: "longdash" }); map.geoObjects.add(line); map.geoObjects.add(area); pizza.balloon.open(); -___" + "SgYAAKHO__8bEQAAQHX__y0BAAB _____ 8gIAAFcBAAAREAAAXej __- EEAAAo_v__mwIAANH8__9zAwAAdfj__" + "wAJAACBAAAAbgEAAK0BAAAaAgAA2wMAAKAEAAB_____VgAAAAoHAAACAQAArAAAAHcFAAAl_P__" + "3gMAAAAAAAAyAwAA1wAAAMYCAACtAQAAcAIAAFkCAAA =");  var map = new ym.Map('map', { center: [59.947, 30.325], zoom: 13, type: null // -    "" . }, {}); var osmLayer = new ym.Layer('http://otile%d.mqcdn.com/tiles/1.0.0/osm/%z/%x/%y.png', { projection: ym.projection.sphericalMercator, //    OSM tileTransparent: true }); map.layers.add(osmLayer); var train = new ym.Placemark([59.928815, 30.362311], { hintContent: " " }, { preset: "twirl#trainIcon" }) map.geoObjects.add(train); var pizza = new ym.Placemark([59.954327, 30.30698], { balloonContent: "" }, { preset: "twirl#cafeIcon" }) map.geoObjects.add(pizza); var area = new ym.Circle([[59.954327, 30.30698], 1400], { hintContent: " " }, { strokeColor: "#7C444399", strokeWidth: 2, fillColor: "#FFFFFF66", hintHideTimeout: 100 }); area.events.add("mouseenter", function(e) { this.options.set({ strokeColor: "#7C4443BB", strokeWidth: 4, fillColor: "#FFFFFF99" }) }, area); area.events.add("mouseleave", function(e) { this.options.set({ strokeColor: "#7C444399", strokeWidth: 2, fillColor: "#FFFFFF66" }) }, area); var geometry = ym.geometry.LineString.fromEncodedCoordinates("-nCSA99KzwFdBwAA0v3__2kBAABk-___" + "SgYAAKHO__8bEQAAQHX__y0BAAB_____8gIAAFcBAAAREAAAXej__-EEAAAo_v__mwIAANH8__9zAwAAdfj__" + "wAJAACBAAAAbgEAAK0BAAAaAgAA2wMAAKAEAAB_____VgAAAAoHAAACAQAArAAAAHcFAAAl_P__" + "3gMAAAAAAAAyAwAA1wAAAMYCAACtAQAAcAIAAFkCAAA="); //    var line = new ym.Polyline(geometry, {}, { strokeWidth: 2, strokeStyle: "longdash" }); map.geoObjects.add(line); map.geoObjects.add(area); pizza.balloon.open(); 

рдПрдХ рдкрд░рдд рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЬрдм рддрдХ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ % d , % z , x рдФрд░ % y рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдФрд░ рдкрд╣рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ % c рдирд╣реАрдВред
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реИред

рдЙрджрд╛рд╣рд░рдг 3. рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирдХреНрд╢реЗ рдмрдирд╛рдирд╛


рдЬреАрд╡рд┐рдд рдЙрджрд╛рд╣рд░рдг

  //    var projection = new ym.projection.Cartesian([[0, 0], [100, 100]]); var layer = function(){ return new ym.Layer(function(tile, zoom) { return "http://mt.gmapuploader.com/tiles/bneaLXS8B7/tile-" + zoom + "-" + (tile[1] * Math.pow(2, zoom) + tile[0]) + ".jpg"; }); }; var lineageMap = new ym.MapType('LineageMap', [layer]); ym.mapType.storage.add('lineage#map', lineageMap); var map = new ym.Map('map', { center: [45, 54], zoom: 1, type: "lineage#map" }, { maxZoom: 6, minZoom: 1, projection: projection }); var miniMap = new ym.control.MiniMap(); miniMap.options.set("zoomOffset", 2); //        miniMap.setType('lineage#map'); map.controls.add(miniMap); map.controls.add(new ym.control.MapTools(['drag', 'magnifier'])); var zoom = new ym.control.ZoomControl({ customTips: [{ index: 2, value: ''}, { index: 5, value: ''}] }); map.controls.add(zoom); var points = []; for (var i = 0; i < 100; i++) { var coordinates = [Math.floor(Math.random() * 60) + 20, Math.floor(Math.random() * 60) + 20]; points[i] = new ym.Placemark(coordinates, { hintContent: "point " + i }, { iconImageHref: "http://wowimg.zamimg.com/images/Mapper/pin-yellow.png", iconImageSize: [11, 11] }); } var clusterer = new ym.Clusterer(); clusterer.add(points); map.geoObjects.add(clusterer); 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджреЛ рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рд╕реЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░рдд рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╣рдореЗрдВ рдПрдХ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рдкрд░рдд рд╢рд╛рдорд┐рд▓ рд╣реЛред рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ : "рд╡рдВрд╢ # рдирдХреНрд╢рд╛" рдорд╛рдирдЪрд┐рддреНрд░ рдФрд░ рдорд┐рдиреАрдореИрдк рдкрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдВред рд╢реБрд░реБрдЖрдд (рдиреНрдпреВрдирддрдо # рдирдХреНрд╢рд╛ ') рдХреЛ рдиреНрдпреВрдирддрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

MMORPG рдФрд░ рдирд┐рд░реНрдорд╛рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЧреЛрд▓рд╛рдХрд╛рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рдХреНрд╖реЗрдкрдг рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдЕрдВрдХ рджреЗрд╢рд╛рдВрддрд░ рдФрд░ рдЕрдХреНрд╖рд╛рдВрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдзрд╛рд░рдг x рдФрд░ y рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред

PS рдЯрд╛рдЗрд▓ рдХреИрд╕реЗ рдХрд╛рдЯреЗрдВ?


Source: https://habr.com/ru/post/In142930/


All Articles