Google рдореИрдкреНрд╕ v3 рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ


рдореИрдВ Google рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВред рдирдпрд╛, рд╕рдВрд╕реНрдХрд░рдг 3. рдирдП рдХрд╛рд░реНрдб рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ: рд╡реЗ рддреЗрдЬрд╝ рд╣реИрдВ, рдФрд░ рдбрд┐рдЬрд╝рд╛рдЗрди рдмрд╣реБрдд рд╕реБрдВрджрд░ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ ред рдПрдХ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд░реНрдХрд░ рдПрдХрд▓ рд░рдВрдЧ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдмрд╣реБ-рд░рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ - рд╣рдо рдПрдХ рдЫреЛрдЯреА рд╕реЗрд╡рд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░рдВрдЧ рдХрд╛ рдПрдХ рдорд╛рдирдХ рдорд╛рдирдХ рдорд╛рд░реНрдХрд░ рджреЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдо, рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ ред


рдорд╛рдирдХ рдорд╛рд░реНрдХрд░


рдЫрд╡рд┐
рдорд╛рдирдХ рдорд╛рд░реНрдХрд░ Google рдореИрдкреНрд╕ рджреНрд╡рд╛рд░рд╛ mt.googleapis.com/vt/icon/name=icons/spotlight/spotlight-poi.png&scale=2 рдкрд░ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╛рдпрд░рдмрдЧ , рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдкреГрд╖реНрда рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдХрд░ред )ред
рд╕реНрдХреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд▓рд┐рдВрдХ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреА рдЫрд╡рд┐рдпрд╛рдВ рджреЗрддрд╛ рд╣реИ:

рд╕реНрдХреЗрд▓
рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░
1
22px ├Ч 40px
2
44px ├Ч 80px
3
66px ├Ч 120px
4
88px ├Ч 160px


рдХреИрд╕реЗ рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?


рд╣рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:

  1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдорд╛рдирдХ рдорд╛рд░реНрдХрд░ рдХреЛ рддрд┐рд░рдЫрд╛ рдХрд░реЗрдВред


  2. рдореВрд▓ рдорд╛рд░реНрдХрд░ рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдореБрдЦреМрдЯрд╛ рдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрд╕ рд░рдВрдЧ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдорд╛рд░реНрдХрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд░рдВрдЧрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпреЗ рдЪрд┐рддреНрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреМрдЯрд╛ рд╣реЛрдВрдЧреЗред


  3. рдУрд╡рд░рд▓реИрдк рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдХрд░ рдХреА рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдЫрд╡рд┐ рдкрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рд░рдЦреЛред


  4. рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдП рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдмрд╣рд╛рд▓ рдХрд░реЗрдВ (рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдорд╛рд░реНрдХрд░ рдХреЗ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХреА рдирдХрд▓ рдХрд░рдХреЗ)ред




рд╕реНрд╡рдЪрд╛рд▓рди

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░рдордЧреАрдХ рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЫрд╡рд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ:
convert -size 88x160 xc:"#0000ff" mask.png #   convert marker-bw.png mask.png -compose Overlay -composite temp.png #   convert temp.png marker-bw.png -compose copy-opacity -composite ready.png #  - 


рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ Node.js. рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЖрдХрд╛рд░ рдФрд░ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рдорд╛рд░реНрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ / рдЧреЗрдЯрдорд╛рд░реНрдХрд░? рд╕реНрдХреЗрд▓ = {рдорд╛рд░реНрдХрд░ рдЖрдХрд╛рд░} рдФрд░ рд░рдВрдЧ = {рд╣реЗрдХреНрд╕-рдорд╛рд░реНрдХрд░ рд░рдВрдЧ рдХреЛрдб} рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ:

 var colorRegexp = /^(?:[0-9a-f]{3}){1,2}$/i; //  ,         var scales = ["22x40", "44x80", "66x120", "88x160"]; // ,     app.get('/getmarker',function(req, res){ //    ,      var color = req.query["color"]; if (!color || !colorRegexp.test(color)){ color = "f55850" } else { color.toLowerCase(); } //     ,      var scale = req.query["scale"]; var scale = new Number(req.query["scale"]); if (!scale){ scale = 1; } scale--; if (scale < 0) scale = 0; if (scale > scales.length - 1) scale = scales.length - 1; //  ,      ,         var filename = "./markers/marker-" + color + "-" + scale + ".png"; fs.exists(filename, function(exists) { if (exists) { //     ,    console.log(filename + " exists, sended"); res.sendfile(filename); } else { exec( //   'convert -size ' + scales[scale] + ' xc:#"' + color + '" mask' + color + scale +'.png \n' + //   -   'convert marker-bw-' + scale + '.png mask' + color + scale +'.png -compose Overlay -composite temp' + color + scale +'.png \n' + //    ,    'convert temp' + color + scale +'.png marker-bw-' + scale + '.png -compose copy-opacity -composite ' + filename, console.log(filename + " created and sended"); res.sendfile(filename, function(){ //  exec('rm temp' + color + scale +'.png mask' + color + scale +'.png'); }); ); } }); }); 


рдкреВрд░рд╛ рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

Google рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдорд╛рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рд╕реЗрд╡рд╛ http://gmapsmarkergenerator.eu01.aws.af.cm рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдорд╛рд░реНрдХрд░ рд╕реНрд╡рдпрдВ gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale= {рдорд╛рд░реНрдХрд░ рдЖрдХрд╛рд░} рдФрд░ рд░рдВрдЧ = {HEX рдорд╛рд░реНрдХрд░ рд░рдВрдЧ рдХреЛрдб} рд╣реИрдВред рдирдХреНрд╢реЗ рдкрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ?
Gmaps.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЪрд▓ рд░рд╣реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 var map = new GMaps({ div: '#gmap', lat: 55.7722200, lng: 37.6155600, zoom: 11 }); map.addMarkers( [{ "lat": "55.767293", "lng": "37.544298", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=00ffff" }, { "lat": "55.747215", "lng": "37.655428", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=ff00ff" }, { "lat": "55.741408", "lng": "37.629908", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=ffff00" }, { "lat": "55.799994", "lng": "37.618375", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=ff0000" }, { "lat": "55.730858", "lng": "37.561649", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=00ff00" }, { "lat": "55.800309", "lng": "37.639824", "icon": "gmapsmarkergenerator.eu01.aws.af.cm/getmarker?scale=1&color=0000ff" }] ); 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рдЖрдЗрдХрди рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рд╕реЗрд╡рд╛ рд▓рд┐рдВрдХ
GitHub

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


All Articles