Google рдорд╛рдирдЪрд┐рддреНрд░ API (рдХрд╕реНрдЯрдо рд▓реЗрдмрд▓ рдФрд░ рдЯреВрд▓рдЯрд┐рдкреНрд╕)

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдирдХреНрд╢реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд▓рд┐рдВрдХ рдореЗрдВ рдмрд╕ рдПрдХ рдирдпрд╛ рд╡рд┐рд╖рдп рджреЗрдЦрд╛ред
рдореИрдВ Google рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛



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

рдЙрд╕реА рд╕рдордп, Google рдореИрдкреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╣рд┐рд╕реНрд╕рд╛ Google рдореИрдк API v2 рдХреЗ рд▓рд┐рдП рдерд╛, рдЬрд┐рд╕реЗ рдЕрднреА рднреА рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдореЗрдВ рдореИрдкреНрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рд▓реЗрдмрд▓



рдореИрдВ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛ - рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рдбрд╛рд▓рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрдЧрд╛ред
рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рджреНрд╡рд╛рд░рд╛, рдореИрдВ рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЪрд┐рддреНрд░ рдкрд╛рда рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред

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

new google.maps.MarkerImage(
'images/bg-num.png' ,
new google.maps.Size(33,33),
new google.maps.Point(0,0),
new google.maps.Point(0,33)
);


* This source code was highlighted with Source Code Highlighter .


рдПрдкреАрдЖрдИ

рдорд╛рд░реНрдХрд░реИрдореЗрдЬ (url: string, size ?: size, Origin ?: Point, anchor ?: Point, scaledSize ?: size)

рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ:
- рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЪрд┐рддреНрд░ рдХрд╛ рдкрде рд╣реИ
- рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдХрд░ рдХреЗ рдкрд┐рдХреНрд╕рд▓ рдореЗрдВ рдЖрдХрд╛рд░
- рдорд╛рд░реНрдХрд░ рдкрд┐рдХреНрдЪрд░ рдкреЛрдЬрд┐рд╢рдирд┐рдВрдЧ (рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдХ рд╕реНрдХреНрд╡рд╛рдпрд░ рдорд╛рд░реНрдХрд░ 33px рд╣реИ, рдФрд░ рдкрд┐рдХреНрдЪрд░ 33x66 - рджреЛ рд╕реНрдЯреЗрдЯреНрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ рдФрд░ рд╕реНрдЯреЗрдЯ рд╣реИ: hover)
- рдорд╛рд░реНрдХрд░ рдХрд╛ рдХреЗрдВрджреНрд░ (0, 33) - рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗред (0, 17) рдирд┐рдЪрд▓рд╛ рдХреЗрдВрджреНрд░, рдЖрджрд┐ред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рд╣реЛрд╡рд░ рдХрд░реЗрдВ - рдЖрдк рдорд╛рд░реНрдХрд░ рдкрд░ рд╣реИрдВрдбрд▓рд░ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХ рдЙрджрд╛рд╣рд░рдг
var myLatlng = new google.maps.LatLng(50.022451, 36.227070);
var myOptions = {
zoom: 10,
scrollwheel: false ,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControlOptions: {
position: google.maps.ControlPosition.BOTTOM_LEFT
}
}
var map = new google.maps.Map( document .getElementById( "map_canvas" ), myOptions);

var markerImage = new google.maps.MarkerImage(
'images/bg-num.png' ,
new google.maps.Size(33,33),
new google.maps.Point(0,0),
new google.maps.Point(0,33)
);
var markerImageHover = new google.maps.MarkerImage(
'images/bg-num.png' ,
new google.maps.Size(33,33),
new google.maps.Point(0,33),
new google.maps.Point(0,33)
);

var marker = new google.maps.Marker({
icon: markerImage,
position: myLatlng,
map: map,
title: "Hello World!"
});

google.maps. event .addListener(marker, 'mouseover' , function () {
marker.setIcon(markerImageHover);
});

google.maps. event .addListener(marker, 'mouseout' , function () {
marker.setIcon(markerImage);
});


* This source code was highlighted with Source Code Highlighter .


рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдХреБрдЫ рдерд╛ рд╡рд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреЗрдЬ рдкрд░ рдПрдХ рджрд░реНрдЬрди рдРрд╕реЗ рдорд╛рд░реНрдХрд░ рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдирдВрдмрд░ рдпрд╛ рд╕рд╛рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рдкрд╣рд▓реЗ рд╕реЗ рд▓рд╛рдЧреВ рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╕реНрд╡реАрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

for ( var i = 0; i < locations.length; i++) {
var image = new google.maps.MarkerImage( 'marker' + i + '.png' ,
new google.maps.Size(20, 34),
new google.maps.Point(0, 0),
new google.maps.Point(10, 34));
}


* This source code was highlighted with Source Code Highlighter .


рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рдЕрдиреНрдп Google рд╕реЗрд╡рд╛ Google рдХреЗ рдЪрд╛рд░реНрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рддреАрдХ рдореЗрдВ ред

var links = [];
for ( var i = 1; i < 3; i++) {
link.push( 'https://chart.googleapis.com/chart?chst=d_map_pin_letter_withshadow&chld=' + i + '|FF0000|000000' );
};

console.log(link); //[ "https://chart.googleapis.com/chart?chst=d_map_pin_letter_withshadow&chld=1|FF0000|000000" , "https://chart.googleapis.com/chart?chst=d_map_pin_letter_withshadow&chld=2|FF0000|000000" , "https://chart.googleapis.com/chart?chst=d_map_pin_letter_withshadow&chld=1|FF0000|000000" ]


* This source code was highlighted with Source Code Highlighter .


рдореЗрд░реЗ рдкрд╛рд╕ рдЙрдирдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреА рдХрд┐ рд╡рд╣рд╛рдБ рдкрд░ рдореЗрд░реА рддрд╕реНрд╡реАрд░ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореЗрд░реЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓рдЯрд┐рдк рдерд╛ред

Google рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЯреВрд▓рдЯрд┐рдкреНрд╕



рдЯреВрд▓рдЯрд┐рдкреНрд╕ - рдпрд╣ рдЙрд╕ рдорд╛рд░реНрдХрд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЙрд╕ рдкрд░ рд╣реЙрд╡рд░ / рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред
Google API рдЗрд╕рдХреЗ рд▓рд┐рдП InfoWindow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред

var infowindow = new google.maps.InfoWindow({
content: 'Hello world'
});


* This source code was highlighted with Source Code Highlighter .


рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдк:
рдЕрдХреНрд╖рдо рдХрд░реЗрдВрдСрдкреНрдЯрд╛рди рдмреВрд▓рд┐рдпрди - рдЯреВрд▓рдЯрд┐рдк рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрдб рдпрд╛ рддреЛ рдЙрд╕ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВ
maxWidth px рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░
рд╕рд╛рдордЧреНрд░реА рд╕рд╛рдордЧреНрд░реА - рдЯреВрд▓рдЯрд┐рдк рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ HTML рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

var content = document .createElement( 'div' );
content.innerHTML = "<strong>Hello world</strong> + JS ^_^" ;
var infowindow = new google.maps.InfoWindow({
content: content
});

google.maps. event .addListener(marker, 'click' , function () {
infowindow.open(map, marker);
});

* This source code was highlighted with Source Code Highlighter .


рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдЯреВрд▓рдЯрд┐рдк рд╕реЗ "рд░реИрдкрд░" рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ - рд╡рд╣реА рд╕рдлреЗрдж рдЧреЛрд▓ рдЧреЗрдВрдж, рдФрд░ рдиреНрдпреВ рдФрд░ рдХреВрд▓ рдЯреВрд▓рдЯрд┐рдк рдХреЗ рдкреВрд░реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рдПрдХ рдорд╛рдирдХ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред
рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЗрдиреНрдлреЛрд╡рд┐рдВрдбреЛ рдФрд░ рдорд╛рд░реНрдХрд░ рджреЛрдиреЛрдВ "рдПрдХреНрд╕рдЯреЗрдВрд╢рди" рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдЖрдпрд╛
рдореЗрд░реА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рдирд┐рд╢рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд▓рдЧ-рдЗрди рдерд╛ред

рдореИрдВ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдВрдХрд▓рди рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдпрд╣рд╛рдБ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП 2 рдкреНрд▓рдЧ-рдЗрди рд╣реИрдВред

рджрд░рдЕрд╕рд▓, рд▓реЗрдмрд▓ рдкреНрд▓рдЧрдЗрди рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдкрдиреА Google рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗрд╡рд╛ рдХреЛ рд╡рд░реАрдпрддрд╛ рдФрд░ рд▓рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХрд╕реНрдЯрдо рдорд╛рд░реНрдХрд░ рдФрд░ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓рдЯрд┐рдк рджреЛрдиреЛрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред

рдЙрджрд╛рд╣рд░рдг:

рдорд╛рд░реНрдХрд░ рдмрдЬрд╝ рдкрд╛рда + рдирд┐рдпрдорд┐рдд рдЯреВрд▓рдЯрд┐рдк
рдореЗрд░рд╛ рд░рд┐рд╡рд╛рдЬ (рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдлрд╛рдпрд░ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдзреА рд╕реНрдЯрд╛рдЗрд▓ рд╣рдЯрд╛ рджреА)

рд╕рдВрдЧреНрд░рд╣

рдХреЛрдб рдЕрдЪреНрдЫрд╛ рд╣реЛрдиреЗ рдХрд╛ рдирд╛рдЯрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ + рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рд░реВрдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

PS рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд╣рд╛рдВ, рдФрд░ рдпрд╣ рдХрд╛рдо рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

PSS рдЖрд▓реЛрдЪрдирд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдФрд░ рдХрд┐рдХ рдХрд░реЗрдВ

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


All Articles