1 Star 10 Fork 3

白利华 / leaflet-book

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {
  max-width: 980px;
  border: 1px solid #ddd;
  outline: 1300px solid #fff;
  margin: 16px auto;
}

body .markdown-body
{
  padding: 45px;
}

@font-face {
  font-family: fontawesome-mini;
  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
}

.markdown-body {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  color: #333333;
  overflow: hidden;
  font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
  font-size: 16px;
  line-height: 1.6;
  word-wrap: break-word;
}

.markdown-body a {
  background: transparent;
}

.markdown-body a:active,
.markdown-body a:hover {
  outline: 0;
}

.markdown-body b,
.markdown-body strong {
  font-weight: bold;
}

.markdown-body mark {
  background: #ff0;
  color: #000;
  font-style: italic;
  font-weight: bold;
}

.markdown-body sub,
.markdown-body sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
.markdown-body sup {
  top: -0.5em;
}
.markdown-body sub {
  bottom: -0.25em;
}

.markdown-body h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

.markdown-body img {
  border: 0;
}

.markdown-body hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

.markdown-body pre {
  overflow: auto;
}

.markdown-body code,
.markdown-body kbd,
.markdown-body pre,
.markdown-body samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

.markdown-body input {
  color: inherit;
  font: inherit;
  margin: 0;
}

.markdown-body html input[disabled] {
  cursor: default;
}

.markdown-body input {
  line-height: normal;
}

.markdown-body input[type="checkbox"] {
  box-sizing: border-box;
  padding: 0;
}

.markdown-body table {
  border-collapse: collapse;
  border-spacing: 0;
}

.markdown-body td,
.markdown-body th {
  padding: 0;
}

.markdown-body .codehilitetable {
  border: 0;
  border-spacing: 0;
}

.markdown-body .codehilitetable tr {
  border: 0;
}

.markdown-body .codehilitetable pre,
.markdown-body .codehilitetable div.codehilite {
  margin: 0;
}

.markdown-body .linenos,
.markdown-body .code,
.markdown-body .codehilitetable td {
  border: 0;
  padding: 0;
}

.markdown-body td:not(.linenos) .linenodiv {
  padding: 0 !important;
}

.markdown-body .code {
  width: 100%;
}

.markdown-body .linenos div pre,
.markdown-body .linenodiv pre,
.markdown-body .linenodiv {
  border: 0;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
  -webkit-border-top-left-radius: 3px;
  -webkit-border-bottom-left-radius: 3px;
  -moz-border-radius-topleft: 3px;
  -moz-border-radius-bottomleft: 3px;
  border-top-left-radius: 3px;
  border-bottom-left-radius: 3px;
}

.markdown-body .code div pre,
.markdown-body .code div {
  border: 0;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
}

.markdown-body * {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.markdown-body input {
  font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
  line-height: 1.4;
}

.markdown-body a {
  color: #4183c4;
  text-decoration: none;
}

.markdown-body a:hover,
.markdown-body a:focus,
.markdown-body a:active {
  text-decoration: underline;
}

.markdown-body hr {
  height: 0;
  margin: 15px 0;
  overflow: hidden;
  background: transparent;
  border: 0;
  border-bottom: 1px solid #ddd;
}

.markdown-body hr:before,
.markdown-body hr:after {
  display: table;
  content: " ";
}

.markdown-body hr:after {
  clear: both;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
  margin-top: 15px;
  margin-bottom: 15px;
  line-height: 1.1;
}

.markdown-body h1 {
  font-size: 30px;
}

.markdown-body h2 {
  font-size: 21px;
}

.markdown-body h3 {
  font-size: 16px;
}

.markdown-body h4 {
  font-size: 14px;
}

.markdown-body h5 {
  font-size: 12px;
}

.markdown-body h6 {
  font-size: 11px;
}

.markdown-body blockquote {
  margin: 0;
}

.markdown-body ul,
.markdown-body ol {
  padding: 0;
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body ol ol,
.markdown-body ul ol {
  list-style-type: lower-roman;
}

.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
  list-style-type: lower-alpha;
}

.markdown-body dd {
  margin-left: 0;
}

.markdown-body code,
.markdown-body pre,
.markdown-body samp {
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: 12px;
}

.markdown-body pre {
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body kbd {
  background-color: #e7e7e7;
  background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
  background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
  background-image: linear-gradient(#fefefe, #e7e7e7);
  background-repeat: repeat-x;
  border-radius: 2px;
  border: 1px solid #cfcfcf;
  color: #000;
  padding: 3px 5px;
  line-height: 10px;
  font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
  display: inline-block;
}

.markdown-body>*:first-child {
  margin-top: 0 !important;
}

.markdown-body>*:last-child {
  margin-bottom: 0 !important;
}

.markdown-body .headerlink {
  font: normal 400 16px fontawesome-mini;
  vertical-align: middle;
  margin-left: -16px;
  float: left;
  display: inline-block;
  text-decoration: none;
  opacity: 0;
  color: #333;
}

.markdown-body .headerlink:focus {
  outline: none;
}

.markdown-body h1 .headerlink {
  margin-top: 0.8rem;
}

.markdown-body h2 .headerlink,
.markdown-body h3 .headerlink {
  margin-top: 0.6rem;
}

.markdown-body h4 .headerlink {
  margin-top: 0.2rem;
}

.markdown-body h5 .headerlink,
.markdown-body h6 .headerlink {
  margin-top: 0;
}

.markdown-body .headerlink:hover,
.markdown-body h1:hover .headerlink,
.markdown-body h2:hover .headerlink,
.markdown-body h3:hover .headerlink,
.markdown-body h4:hover .headerlink,
.markdown-body h5:hover .headerlink,
.markdown-body h6:hover .headerlink {
  opacity: 1;
  text-decoration: none;
}

.markdown-body h1 {
  padding-bottom: 0.3em;
  font-size: 2.25em;
  line-height: 1.2;
  border-bottom: 1px solid #eee;
}

.markdown-body h2 {
  padding-bottom: 0.3em;
  font-size: 1.75em;
  line-height: 1.225;
  border-bottom: 1px solid #eee;
}

.markdown-body h3 {
  font-size: 1.5em;
  line-height: 1.43;
}

.markdown-body h4 {
  font-size: 1.25em;
}

.markdown-body h5 {
  font-size: 1em;
}

.markdown-body h6 {
  font-size: 1em;
  color: #777;
}

.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre,
.markdown-body .admonition {
  margin-top: 0;
  margin-bottom: 16px;
}

.markdown-body hr {
  height: 4px;
  padding: 0;
  margin: 16px 0;
  background-color: #e7e7e7;
  border: 0 none;
}

.markdown-body ul,
.markdown-body ol {
  padding-left: 2em;
}

.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body li>p {
  margin-top: 16px;
}

.markdown-body dl {
  padding: 0;
}

.markdown-body dl dt {
  padding: 0;
  margin-top: 16px;
  font-size: 1em;
  font-style: italic;
  font-weight: bold;
}

.markdown-body dl dd {
  padding: 0 16px;
  margin-bottom: 16px;
}

.markdown-body blockquote {
  padding: 0 15px;
  color: #777;
  border-left: 4px solid #ddd;
}

.markdown-body blockquote>:first-child {
  margin-top: 0;
}

.markdown-body blockquote>:last-child {
  margin-bottom: 0;
}

.markdown-body table {
  display: block;
  width: 100%;
  overflow: auto;
  word-break: normal;
  word-break: keep-all;
}

.markdown-body table th {
  font-weight: bold;
}

.markdown-body table th,
.markdown-body table td {
  padding: 6px 13px;
  border: 1px solid #ddd;
}

.markdown-body table tr {
  background-color: #fff;
  border-top: 1px solid #ccc;
}

.markdown-body table tr:nth-child(2n) {
  background-color: #f8f8f8;
}

.markdown-body img {
  max-width: 100%;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.markdown-body code,
.markdown-body samp {
  padding: 0;
  padding-top: 0.2em;
  padding-bottom: 0.2em;
  margin: 0;
  font-size: 85%;
  background-color: rgba(0,0,0,0.04);
  border-radius: 3px;
}

.markdown-body code:before,
.markdown-body code:after {
  letter-spacing: -0.2em;
  content: "\00a0";
}

.markdown-body pre>code {
  padding: 0;
  margin: 0;
  font-size: 100%;
  word-break: normal;
  white-space: pre;
  background: transparent;
  border: 0;
}

.markdown-body .codehilite {
  margin-bottom: 16px;
}

.markdown-body .codehilite pre,
.markdown-body pre {
  padding: 16px;
  overflow: auto;
  font-size: 85%;
  line-height: 1.45;
  background-color: #f7f7f7;
  border-radius: 3px;
}

.markdown-body .codehilite pre {
  margin-bottom: 0;
  word-break: normal;
}

.markdown-body pre {
  word-wrap: normal;
}

.markdown-body pre code {
  display: inline;
  max-width: initial;
  padding: 0;
  margin: 0;
  overflow: initial;
  line-height: inherit;
  word-wrap: normal;
  background-color: transparent;
  border: 0;
}

.markdown-body pre code:before,
.markdown-body pre code:after {
  content: normal;
}

/* Admonition */
.markdown-body .admonition {
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  position: relative;
  border-radius: 3px;
  border: 1px solid #e0e0e0;
  border-left: 6px solid #333;
  padding: 10px 10px 10px 30px;
}

.markdown-body .admonition table {
  color: #333;
}

.markdown-body .admonition p {
  padding: 0;
}

.markdown-body .admonition-title {
  font-weight: bold;
  margin: 0;
}

.markdown-body .admonition>.admonition-title {
  color: #333;
}

.markdown-body .attention>.admonition-title {
  color: #a6d796;
}

.markdown-body .caution>.admonition-title {
  color: #d7a796;
}

.markdown-body .hint>.admonition-title {
  color: #96c6d7;
}

.markdown-body .danger>.admonition-title {
  color: #c25f77;
}

.markdown-body .question>.admonition-title {
  color: #96a6d7;
}

.markdown-body .note>.admonition-title {
  color: #d7c896;
}

.markdown-body .admonition:before,
.markdown-body .attention:before,
.markdown-body .caution:before,
.markdown-body .hint:before,
.markdown-body .danger:before,
.markdown-body .question:before,
.markdown-body .note:before {
  font: normal normal 16px fontawesome-mini;
  -moz-osx-font-smoothing: grayscale;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  line-height: 1.5;
  color: #333;
  position: absolute;
  left: 0;
  top: 0;
  padding-top: 10px;
  padding-left: 10px;
}

.markdown-body .admonition:before {
  content: "\f056\00a0";
  color: 333;
}

.markdown-body .attention:before {
  content: "\f058\00a0";
  color: #a6d796;
}

.markdown-body .caution:before {
  content: "\f06a\00a0";
  color: #d7a796;
}

.markdown-body .hint:before {
  content: "\f05a\00a0";
  color: #96c6d7;
}

.markdown-body .danger:before {
  content: "\f057\00a0";
  color: #c25f77;
}

.markdown-body .question:before {
  content: "\f059\00a0";
  color: #96a6d7;
}

.markdown-body .note:before {
  content: "\f040\00a0";
  color: #d7c896;
}

.markdown-body .admonition::after {
  content: normal;
}

.markdown-body .attention {
  border-left: 6px solid #a6d796;
}

.markdown-body .caution {
  border-left: 6px solid #d7a796;
}

.markdown-body .hint {
  border-left: 6px solid #96c6d7;
}

.markdown-body .danger {
  border-left: 6px solid #c25f77;
}

.markdown-body .question {
  border-left: 6px solid #96a6d7;
}

.markdown-body .note {
  border-left: 6px solid #d7c896;
}

.markdown-body .admonition>*:first-child {
  margin-top: 0 !important;
}

.markdown-body .admonition>*:last-child {
  margin-bottom: 0 !important;
}

/* progress bar*/
.markdown-body .progress {
  display: block;
  width: 300px;
  margin: 10px 0;
  height: 24px;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  background-color: #ededed;
  position: relative;
  box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
}

.markdown-body .progress-label {
  position: absolute;
  text-align: center;
  font-weight: bold;
  width: 100%; margin: 0;
  line-height: 24px;
  color: #333;
  text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
  -webkit-font-smoothing: antialiased !important;
  white-space: nowrap;
  overflow: hidden;
}

.markdown-body .progress-bar {
  height: 24px;
  float: left;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  background-color: #96c6d7;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0, 0, 0, .1);
  background-size: 30px 30px;
  background-image: -webkit-linear-gradient(
    135deg, rgba(255, 255, 255, .4) 27%,
    transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%,
    transparent 77%, transparent
  );
  background-image: -moz-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: -ms-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: -o-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
}

.markdown-body .progress-100plus .progress-bar {
  background-color: #a6d796;
}

.markdown-body .progress-80plus .progress-bar {
  background-color: #c6d796;
}

.markdown-body .progress-60plus .progress-bar {
  background-color: #d7c896;
}

.markdown-body .progress-40plus .progress-bar {
  background-color: #d7a796;
}

.markdown-body .progress-20plus .progress-bar {
  background-color: #d796a6;
}

.markdown-body .progress-0plus .progress-bar {
  background-color: #c25f77;
}

.markdown-body .candystripe-animate .progress-bar{
  -webkit-animation: animate-stripes 3s linear infinite;
  -moz-animation: animate-stripes 3s linear infinite;
  animation: animate-stripes 3s linear infinite;
}

@-webkit-keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

@-moz-keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

@keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

.markdown-body .gloss .progress-bar {
  box-shadow:
    inset 0 4px 12px rgba(255, 255, 255, .7),
    inset 0 -12px 0 rgba(0, 0, 0, .05);
}

/* MultiMarkdown Critic Blocks */
.markdown-body .critic_mark {
  background: #ff0;
}

.markdown-body .critic_delete {
  color: #c82829;
  text-decoration: line-through;
}

.markdown-body .critic_insert {
  color: #718c00 ;
  text-decoration: underline;
}

.markdown-body .critic_comment {
  color: #8e908c;
  font-style: italic;
}

.markdown-body .headeranchor {
  font: normal normal 16px fontawesome-mini;
  line-height: 1;
  display: inline-block;
  text-decoration: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.headeranchor:before {
  content: '\e157';
}

.markdown-body .task-list-item {
  list-style-type: none;
}

.markdown-body .task-list-item+.task-list-item {
  margin-top: 3px;
}

.markdown-body .task-list-item input {
  margin: 0 4px 0.25em -20px;
  vertical-align: middle;
}

/* Media */
@media only screen and (min-width: 480px) {
  .markdown-body {
    font-size:14px;
  }
}

@media only screen and (min-width: 768px) {
  .markdown-body {
    font-size:16px;
  }
}

@media print {
  .markdown-body * {
    background: transparent !important;
    color: black !important;
    filter:none !important;
    -ms-filter: none !important;
  }

  .markdown-body {
    font-size:12pt;
    max-width:100%;
    outline:none;
    border: 0;
  }

  .markdown-body a,
  .markdown-body a:visited {
    text-decoration: underline;
  }

  .markdown-body .headeranchor-link {
    display: none;
  }

  .markdown-body a[href]:after {
    content: " (" attr(href) ")";
  }

  .markdown-body abbr[title]:after {
    content: " (" attr(title) ")";
  }

  .markdown-body .ir a:after,
  .markdown-body a[href^="javascript:"]:after,
  .markdown-body a[href^="#"]:after {
    content: "";
  }

  .markdown-body pre {
    white-space: pre;
    white-space: pre-wrap;
    word-wrap: break-word;
  }

  .markdown-body pre,
  .markdown-body blockquote {
    border: 1px solid #999;
    padding-right: 1em;
    page-break-inside: avoid;
  }

  .markdown-body .progress,
  .markdown-body .progress-bar {
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
  }

  .markdown-body .progress {
    border: 1px solid #ddd;
  }

  .markdown-body .progress-bar {
    height: 22px;
    border-right: 1px solid #ddd;
  }

  .markdown-body tr,
  .markdown-body img {
    page-break-inside: avoid;
  }

  .markdown-body img {
    max-width: 100% !important;
  }

  .markdown-body p,
  .markdown-body h2,
  .markdown-body h3 {
    orphans: 3;
    widows: 3;
  }

  .markdown-body h2,
  .markdown-body h3 {
    page-break-after: avoid;
  }
}
</style><style>/*GitHub*/
.codehilite {background-color:#fff;color:#333333;}
.codehilite .hll {background-color:#ffffcc;}
.codehilite .c{color:#999988;font-style:italic}
.codehilite .err{color:#a61717;background-color:#e3d2d2}
.codehilite .k{font-weight:bold}
.codehilite .o{font-weight:bold}
.codehilite .cm{color:#999988;font-style:italic}
.codehilite .cp{color:#999999;font-weight:bold}
.codehilite .c1{color:#999988;font-style:italic}
.codehilite .cs{color:#999999;font-weight:bold;font-style:italic}
.codehilite .gd{color:#000000;background-color:#ffdddd}
.codehilite .ge{font-style:italic}
.codehilite .gr{color:#aa0000}
.codehilite .gh{color:#999999}
.codehilite .gi{color:#000000;background-color:#ddffdd}
.codehilite .go{color:#888888}
.codehilite .gp{color:#555555}
.codehilite .gs{font-weight:bold}
.codehilite .gu{color:#800080;font-weight:bold}
.codehilite .gt{color:#aa0000}
.codehilite .kc{font-weight:bold}
.codehilite .kd{font-weight:bold}
.codehilite .kn{font-weight:bold}
.codehilite .kp{font-weight:bold}
.codehilite .kr{font-weight:bold}
.codehilite .kt{color:#445588;font-weight:bold}
.codehilite .m{color:#009999}
.codehilite .s{color:#dd1144}
.codehilite .n{color:#333333}
.codehilite .na{color:teal}
.codehilite .nb{color:#0086b3}
.codehilite .nc{color:#445588;font-weight:bold}
.codehilite .no{color:teal}
.codehilite .ni{color:purple}
.codehilite .ne{color:#990000;font-weight:bold}
.codehilite .nf{color:#990000;font-weight:bold}
.codehilite .nn{color:#555555}
.codehilite .nt{color:navy}
.codehilite .nv{color:teal}
.codehilite .ow{font-weight:bold}
.codehilite .w{color:#bbbbbb}
.codehilite .mf{color:#009999}
.codehilite .mh{color:#009999}
.codehilite .mi{color:#009999}
.codehilite .mo{color:#009999}
.codehilite .sb{color:#dd1144}
.codehilite .sc{color:#dd1144}
.codehilite .sd{color:#dd1144}
.codehilite .s2{color:#dd1144}
.codehilite .se{color:#dd1144}
.codehilite .sh{color:#dd1144}
.codehilite .si{color:#dd1144}
.codehilite .sx{color:#dd1144}
.codehilite .sr{color:#009926}
.codehilite .s1{color:#dd1144}
.codehilite .ss{color:#990073}
.codehilite .bp{color:#999999}
.codehilite .vc{color:teal}
.codehilite .vg{color:teal}
.codehilite .vi{color:teal}
.codehilite .il{color:#009999}
.codehilite .gc{color:#999;background-color:#EAF2F5}
</style><title>README</title></head><body><article class="markdown-body"><h3 id="leaflet-demo">入门 Leaflet 之小 Demo<a class="headerlink" href="#leaflet-demo" title="Permanent link"></a></h3>
<hr />
<blockquote>
<p>写在前面 ---- WebGIS 开发基础之 Leaflet</p>
<ol>
<li>GIS 基本概念:GIS、Map、Layer、Feature、Geometry、Symbol、Data(Point、Polyline、Polygon)、Renderer、Scale、Project、Coordinates;</li>
<li>GIS 开发概述:架构模式、常用平台和 SDK、二维三维</li>
<li>使用 Leaflet 开发常用功能</li>
</ol>
<ul>
<li>地图加载(底图类型、切换):</li>
<li>地图操作(缩放、平移、定位/书签、动画):</li>
<li>图层管理(加载、移除、调整顺序):</li>
<li>要素标绘(点/聚簇、线、面,符号化/静态动态):</li>
<li>属性标注(字段可选、样式定制):</li>
<li>专题地图(点、线、面,渲染):</li>
<li>查询定位(属性查询、空间查询/周边搜索/缓冲区/面查点线面/点线查面、图属互查、综合查询):</li>
<li>信息窗口(入口、Popup、定制):</li>
<li>坐标转换(地理与投影、不同地理坐标系):</li>
<li>空间运算(长度面积测量、点取坐标、缓冲区、相交包含关系):</li>
<li>动态监控(固定点状态切换、车辆监控):
  <img alt="" src="https://user-gold-cdn.xitu.io/2018/2/25/161cd7239e171384?w=1920&amp;h=959&amp;f=png&amp;s=222128" /></li>
</ul>
<ol>
<li><a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/tree/Leaflet%20API.png">Leaflet API</a><img alt="" src="https://user-gold-cdn.xitu.io/2018/3/1/161dd4951441cce1?w=691&amp;h=1217&amp;f=png&amp;s=54115" /></li>
</ol>
</blockquote>
<hr />
<h4 id="demo">Demo 用到的库<a class="headerlink" href="#demo" title="Permanent link"></a></h4>
<ul>
<li>Flat-UI <a href="https://github.com/designmodo/Flat-UI/"> Flat UI is based on Bootstrap, a comfortable, responsive, and functional framework that simplifies the development of websites.</a>Flat-UI 是基于 Bootstrap 的一个扁平化风格 web 开发框架。</li>
<li>leaflet <a href="http://leafletjs.com/reference-1.3.0.html">an open-source JavaScript library for mobile-friendly interactive maps.</a>Leaflet 是一个为建设交互性好适用于移动设备地图,而开发的现代的、开源的 JavaScript 库。</li>
<li>Esri Leaflet <a href="http://esri.github.io/esri-leaflet/">A lightweight set of tools for using ArcGIS services with Leaflet.</a>一个轻量级的工具,基于 leaflet 利用 ArcGIS 服务。</li>
</ul>
<hr />
<h3 id="part-1-demo-1">PART 1: 地图加载(底图类型、切换) <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo1.html">Demo 1 </a><a class="headerlink" href="#part-1-demo-1" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/25/161cd7e9bfff52ad?w=1920&amp;h=957&amp;f=jpeg&amp;s=2237468" /></p>
<ul>
<li>库引用</li>
</ul>
<div class="codehilite"><pre><span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">type</span><span class="o">=</span><span class="s">&quot;text/css&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/css/vendor/bootstrap/css/bootstrap.min.css&quot;</span>
    <span class="p">/&gt;</span>
<span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/css/flat-ui.min.css&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/leaflet/leaflet.css&quot;</span><span class="p">&gt;</span>
</pre></div>

<div class="codehilite"><pre><span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/js/vendor/jquery.min.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/js/flat-ui.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/leaflet/leaflet.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./js/urlTemplate.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</pre></div>

<ul>
<li>地图加载与切换</li>
</ul>
<div class="codehilite"><pre><span class="kr">const</span> <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s2">&quot;mapDiv&quot;</span><span class="p">,</span> <span class="p">{</span>
        <span class="nx">crs</span><span class="o">:</span> <span class="nx">L</span><span class="p">.</span><span class="nx">CRS</span><span class="p">.</span><span class="nx">EPSG3857</span><span class="p">,</span> <span class="c1">//要使用的坐标参考系统,默认的坐标参考系,互联网地图主流坐标系</span>
        <span class="c1">// crs: L.CRS.EPSG4326, //WGS 84坐标系,GPS默认坐标系</span>
        <span class="nx">zoomControl</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
        <span class="c1">// minZoom: 1,</span>
        <span class="nx">attributionControl</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
    <span class="p">}).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">30.6268660000</span><span class="p">,</span> <span class="mf">104.1528940000</span><span class="p">],</span> <span class="mi">18</span><span class="p">);</span><span class="c1">//定位在成都北纬N30°37′45.58″ 东经E104°09′1.44″</span>
    <span class="kd">let</span> <span class="nx">Baselayer</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">mapbox_Image</span><span class="p">,</span> <span class="p">{</span>
       <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span> <span class="c1">//最大视图</span>
        <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span> <span class="c1">//最小视图</span>
        <span class="nx">attribution</span><span class="o">:</span> <span class="s1">&#39;liuvigongzuoshi@foxmail.com  &amp;copy; &lt;a href=&quot;https://github.com/liuvigongzuoshi/WebGIS-for-learnning/tree/master/Leaflet_Demo&quot;&gt;WebGIS-for-learnning&lt;/a&gt;&#39;</span>
    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>

<span class="kr">const</span> <span class="nx">setLayer</span> <span class="o">=</span> <span class="p">(</span><span class="nx">ele</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="nx">map</span><span class="p">.</span><span class="nx">removeLayer</span><span class="p">(</span><span class="nx">Baselayer</span><span class="p">)</span>
    <span class="k">if</span> <span class="p">(</span><span class="nx">ele</span> <span class="o">==</span> <span class="s2">&quot;mapbox_Image&quot;</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">Baselayer</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">mapbox_Image</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span>
            <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">2</span>
        <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
    <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">ele</span> <span class="o">==</span> <span class="s2">&quot;mapbox_Vector&quot;</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">Baselayer</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">mapbox_Vector</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span>
            <span class="c1">// minZoom: 2</span>
        <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">Baselayer</span><span class="p">)</span>
    <span class="p">}</span>
<span class="p">}</span>
</pre></div>

<h3 id="demo-1-h5-geolocation-api-demo-11">基于 Demo 1 利用 H5 Geolocation API 定位到当前位置 <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo1.1.html">Demo 1.1 </a><a class="headerlink" href="#demo-1-h5-geolocation-api-demo-11" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/26/161d283e74f18d76?w=964&amp;h=480&amp;f=gif&amp;s=862550" /></p>
<ul>
<li>库引用 如上 Demo 1</li>
</ul>
<div class="codehilite"><pre><span class="c">&lt;!-- marker高亮显示库引用 --&gt;</span>
<span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/leaflet.marker.highlight/leaflet.marker.highlight.css&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/leaflet.marker.highlight/leaflet.marker.highlight.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</pre></div>

<ul>
<li>判断浏览器是否支持</li>
</ul>
<div class="codehilite"><pre>    <span class="kd">let</span> <span class="nx">map</span><span class="p">;</span>
    <span class="kd">let</span> <span class="nx">Baselayer</span><span class="p">;</span>
    <span class="c1">// 使用H5 API定位 定位在当前位置</span>
    <span class="k">if</span> <span class="p">(</span><span class="nx">navigator</span><span class="p">.</span><span class="nx">geolocation</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;/* 地理位置服务可用 */&#39;</span><span class="p">)</span>
        <span class="nx">navigator</span><span class="p">.</span><span class="nx">geolocation</span><span class="p">.</span><span class="nx">getCurrentPosition</span><span class="p">(</span><span class="nx">h5ApiSuccess</span><span class="p">,</span> <span class="nx">h5ApiError</span><span class="p">);</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;/* 地理位置服务不可用 */&#39;</span><span class="p">)</span>
        <span class="nx">mapInit</span><span class="p">([</span><span class="mf">30.374558</span><span class="p">,</span> <span class="mf">104.09144</span><span class="p">]);</span><span class="c1">//指定一个数据 定位在成都北纬N30°37′45.58″ 东经E104°09′1.44″</span>
    <span class="p">}</span>
</pre></div>

<ul>
<li>定位成功或失败</li>
</ul>
<div class="codehilite"><pre>    <span class="kr">const</span> <span class="nx">h5ApiSuccess</span> <span class="o">=</span> <span class="p">(</span><span class="nx">position</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
        <span class="kd">let</span> <span class="nx">latitude</span> <span class="o">=</span> <span class="nx">position</span><span class="p">.</span><span class="nx">coords</span><span class="p">.</span><span class="nx">latitude</span><span class="p">;</span> <span class="c1">//纬度</span>
        <span class="kd">let</span> <span class="nx">longitude</span> <span class="o">=</span> <span class="nx">position</span><span class="p">.</span><span class="nx">coords</span><span class="p">.</span><span class="nx">longitude</span><span class="p">;</span> <span class="c1">//经度</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;你的经度纬度分别为&#39;</span> <span class="o">+</span> <span class="nx">longitude</span> <span class="o">+</span> <span class="s1">&#39;,&#39;</span> <span class="o">+</span> <span class="nx">latitude</span> <span class="o">+</span> <span class="s1">&#39;。&#39;</span><span class="p">)</span>
        <span class="k">return</span> <span class="nx">mapInit</span><span class="p">([</span><span class="nx">latitude</span><span class="p">,</span> <span class="nx">longitude</span><span class="p">]);</span>
    <span class="p">};</span>

    <span class="kr">const</span> <span class="nx">h5ApiError</span> <span class="o">=</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
        <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;/* 地理位置请求失败 */&#39;</span><span class="p">)</span>
        <span class="nx">mapInit</span><span class="p">([</span><span class="mf">30.374558</span><span class="p">,</span> <span class="mf">104.09144</span><span class="p">]);</span><span class="c1">//指定一个数据 定位在成都北纬N30°37′45.58″ 东经E104°09′1.44″</span>
    <span class="p">};</span>
</pre></div>

<ul>
<li>成功后初始化底图</li>
</ul>
<div class="codehilite"><pre>    <span class="kr">const</span> <span class="nx">mapInit</span> <span class="o">=</span> <span class="p">(</span><span class="nx">LatLng</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
        <span class="nx">map</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s2">&quot;mapDiv&quot;</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">crs</span><span class="o">:</span> <span class="nx">L</span><span class="p">.</span><span class="nx">CRS</span><span class="p">.</span><span class="nx">EPSG3857</span><span class="p">,</span> <span class="c1">//要使用的坐标参考系统,默认的坐标参考系</span>
            <span class="c1">// crs: L.CRS.EPSG4326, //国内的坐标参考系</span>
            <span class="nx">zoomControl</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
            <span class="c1">// minZoom: 1,</span>
            <span class="nx">attributionControl</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
        <span class="p">}).</span><span class="nx">setView</span><span class="p">(</span><span class="nx">LatLng</span><span class="p">,</span> <span class="mi">18</span><span class="p">);</span><span class="c1">//定位在当前位置</span>
        <span class="nx">Baselayer</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">tileLayer</span><span class="p">(</span><span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">mapbox_Image</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span> <span class="c1">//最大视图</span>
            <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">2</span><span class="p">,</span> <span class="c1">//最小视图</span>
            <span class="nx">attribution</span><span class="o">:</span> <span class="s1">&#39;liuvigongzuoshi@foxmail.com  &amp;copy; &lt;a href=&quot;https://github.com/liuvigongzuoshi/WebGIS-for-learnning/tree/master/Leaflet_Demo&quot;&gt;WebGIS-for-learnning&lt;/a&gt;&#39;</span>
        <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>

        <span class="nx">L</span><span class="p">.</span><span class="nx">marker</span><span class="p">(</span><span class="nx">LatLng</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">highlight</span><span class="o">:</span> <span class="s2">&quot;permanent&quot;</span> <span class="c1">//永久高亮显示</span>
        <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
    <span class="p">}</span>
</pre></div>

<blockquote>
<ul>
<li>更多了解 geolocation 对象,可参考<a href="https://developer.mozilla.org/zh-CN/docs/Web/API/Geolocation/Using_geolocation">MDN Web 文档</a></li>
<li>更多了解使用 marker 高亮显示,可参考<a href="https://github.com/brandonxiang/leaflet.marker.highlight">leaflet.marker.highlight</a>插件</li>
<li>基于 Demo 1 利用 leaflet 封装好的 H5 定位 API,定位到当前位置 <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo1.2.html">Demo</a></li>
</ul>
</blockquote>
<h3 id="part-2-demo-2">PART 2: 地图操作(缩放、平移、定位/书签、动画) <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo2.html">Demo 2 </a><a class="headerlink" href="#part-2-demo-2" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/28/161dcd420e164009?w=964&amp;h=480&amp;f=gif&amp;s=2119022" /></p>
<ul>
<li>
<p>库引用 如上 Demo 1</p>
</li>
<li>
<p>设置地图缩放到指定图层</p>
</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">setZoom</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="p">{</span>
  <span class="c1">// animate: false</span>
<span class="p">})</span>  <span class="c1">//设置地图缩放到</span>
</pre></div>

<ul>
<li>图层往里进一个图层,放大</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">zoomIn</span><span class="p">()</span> <span class="c1">//图层往里进一个图层,放大</span>
<span class="c1">//map.zoomOut()  //图层往里出一个图层,缩小</span>
</pre></div>

<ul>
<li>地图平移至中心点</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">panTo</span><span class="p">([</span><span class="mf">37.91082</span><span class="p">,</span> <span class="mf">128.73583</span><span class="p">],</span> <span class="p">{</span>
    <span class="nx">animate</span><span class="o">:</span> <span class="kc">true</span>
<span class="p">})</span> <span class="c1">//地图平移,默认就是true,将地图平移到给定的中心。如果新的中心点在屏幕内与现有的中心点不同则产生平移动作。</span>
</pre></div>

<ul>
<li>地图飞到中心点</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">flyTo</span><span class="p">([</span><span class="mf">36.52</span><span class="p">,</span> <span class="mf">120.31</span><span class="p">]);</span> <span class="c1">// 点到点的抛物线动画,平移加缩放动画</span>
</pre></div>

<blockquote>
<p>注意:尽量避免 setZoom()等地图缩放方法与 flyTo、flyToBounds 一起合用,因为这两类地图操作方法都有各自的缩放值,造成动画不流畅、不能定位到目的点。</p>
</blockquote>
<ul>
<li>地图飞到边界的合适的位置</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">flyToBounds</span><span class="p">(</span><span class="nx">polygon</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">());</span>   <span class="c1">//getBounds(获取边界):返回地图视图的经纬度边界。</span>
    <span class="c1">//飞到这个多变形区域上面,自动判断区域块的大小,合适缩放图层,将地图视图尽可能大地设定在给定的地理边界内。</span>

<span class="kd">let</span> <span class="nx">polygon</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">polygon</span><span class="p">(</span>
          <span class="p">[[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.05</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.03</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.05</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.04</span><span class="p">]],</span>
     <span class="p">[</span><span class="mf">40.774</span><span class="p">,</span> <span class="o">-</span><span class="mf">74.125</span><span class="p">],</span> <span class="p">{</span>
       <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;green&#39;</span><span class="p">,</span>
       <span class="nx">fillColor</span><span class="o">:</span> <span class="s1">&#39;#f03&#39;</span><span class="p">,</span>
       <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.5</span>
    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>  <span class="c1">//地图上绘制一个多形</span>
</pre></div>

<ul>
<li>地图定位到边界的合适的位置</li>
</ul>
<div class="codehilite"><pre><span class="nx">map</span><span class="p">.</span><span class="nx">fitBounds</span><span class="p">(</span><span class="nx">polygon</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">());</span>  <span class="c1">//getBounds(获取边界):返回地图视图的经纬度边界。</span>
  <span class="c1">//平移到一个区域上面,自动判断区域块的大小,合适缩放图层</span>

<span class="kd">let</span> <span class="nx">polygon</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">polygon</span><span class="p">(</span>
          <span class="p">[[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.05</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.03</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.05</span><span class="p">],</span>
          <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.04</span><span class="p">]],</span>
     <span class="p">[</span><span class="mf">40.774</span><span class="p">,</span> <span class="o">-</span><span class="mf">74.125</span><span class="p">],</span> <span class="p">{</span>
       <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;green&#39;</span><span class="p">,</span>
       <span class="nx">fillColor</span><span class="o">:</span> <span class="s1">&#39;#f03&#39;</span><span class="p">,</span>
       <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.5</span>
    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>  <span class="c1">//地图上绘制一个多边形</span>
</pre></div>

<h3 id="part-3-demo-3">PART 3: 图层管理(加载、移除、调整顺序): <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo3.html">Demo 3 </a><a class="headerlink" href="#part-3-demo-3" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/28/161dce7e881a2362?w=1920&amp;h=959&amp;f=jpeg&amp;s=2962698" /></p>
<ul>
<li>库引用</li>
</ul>
<div class="codehilite"><pre><span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">type</span><span class="o">=</span><span class="s">&quot;text/css&quot;</span>  <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/css/vendor/bootstrap/css/bootstrap.min.css&quot;</span>
    <span class="p">/&gt;</span>
<span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/css/flat-ui.min.css&quot;</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;./lib/leaflet/leaflet.css&quot;</span><span class="p">&gt;</span>
</pre></div>

<div class="codehilite"><pre><span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/js/vendor/jquery.min.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/Flat-UI-master/dist/js/flat-ui.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/leaflet/leaflet.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./lib/esri-leaflet-v2.1.2/dist/esri-leaflet.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span> <span class="c">&lt;!-- esri-leafleat插件 --&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;./js/urlTemplate.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
</pre></div>

<ul>
<li>使用 esri-leaflet 插件加载 ArcGIS 底图服务</li>
</ul>
<div class="codehilite"><pre><span class="kd">let</span> <span class="nx">oMap</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
    <span class="kd">let</span> <span class="nx">oLayer</span> <span class="o">=</span> <span class="p">[];</span>

    <span class="nx">oMap</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="s1">&#39;mapDiv&#39;</span><span class="p">,</span> <span class="p">{</span>
        <span class="nx">crs</span><span class="o">:</span> <span class="nx">L</span><span class="p">.</span><span class="nx">CRS</span><span class="p">.</span><span class="nx">EPSG4326</span><span class="p">,</span>
        <span class="nx">zoomControl</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
        <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">7</span><span class="p">,</span>
        <span class="nx">attributionControl</span><span class="o">:</span> <span class="kc">false</span>
    <span class="p">}).</span><span class="nx">setView</span><span class="p">([</span><span class="mf">29.59</span><span class="p">,</span> <span class="mf">106.59</span><span class="p">],</span> <span class="mi">12</span><span class="p">);</span> <span class="c1">//定位在重庆</span>

    <span class="nx">oLayer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">L</span><span class="p">.</span><span class="nx">esri</span><span class="p">.</span><span class="nx">tiledMapLayer</span><span class="p">({</span>
        <span class="nx">url</span><span class="o">:</span> <span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">SYS_CQMap_IMG_MAPSERVER_PATH</span><span class="p">,</span>
        <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span>
        <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
        <span class="nx">useCors</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span> <span class="c1">//是否浏览器在跨域的情况下使用GET请求。</span>
    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">));</span> <span class="c1">//加载第一个底图</span>

    <span class="nx">oLayer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">L</span><span class="p">.</span><span class="nx">esri</span><span class="p">.</span><span class="nx">tiledMapLayer</span><span class="p">({</span>
        <span class="nx">url</span><span class="o">:</span> <span class="nx">urlTemplate</span><span class="p">.</span><span class="nx">SYS_CQMap_IMG_LABEL_MAPSERVER_PATH</span><span class="p">,</span>
        <span class="nx">maxZoom</span><span class="o">:</span> <span class="mi">17</span><span class="p">,</span>
        <span class="nx">minZoom</span><span class="o">:</span> <span class="mi">0</span><span class="p">,</span>
        <span class="nx">useCors</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
    <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">));</span>  <span class="c1">//加载第二个底图</span>
</pre></div>

<ul>
<li>切换底图(移除及加载)</li>
</ul>
<div class="codehilite"><pre><span class="kr">const</span> <span class="nx">setLayer</span> <span class="o">=</span> <span class="p">(</span><span class="nx">layerUrls</span><span class="p">,</span> <span class="nx">maxZoom</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
        <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">oLayer</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
            <span class="nx">oMap</span><span class="p">.</span><span class="nx">removeLayer</span><span class="p">(</span><span class="nx">oLayer</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span> <span class="c1">//将图层在地图上移除</span>
        <span class="p">}</span>
        <span class="nx">oLayer</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1">//制空数组</span>
        <span class="nx">layerUrls</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">item</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
            <span class="nx">oLayer</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">L</span><span class="p">.</span><span class="nx">esri</span><span class="p">.</span><span class="nx">tiledMapLayer</span><span class="p">({</span>
                <span class="nx">url</span><span class="o">:</span> <span class="nx">item</span><span class="p">,</span>
                <span class="nx">useCors</span><span class="o">:</span> <span class="kc">false</span><span class="p">,</span>
                <span class="nx">maxZoom</span><span class="o">:</span> <span class="nx">maxZoom</span><span class="p">,</span> <span class="c1">// 设置最大放大图层值</span>
            <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">));</span>
        <span class="p">})</span>
    <span class="p">}</span>
</pre></div>

<blockquote>
<p>不同的底图可能图层数不一样,就可能造成浏览器去请求不存在的图层,以及给用户展示出空白区域的不好体验,所以切换图层时候应注意设置最大及最小缩放值。</p>
</blockquote>
<h3 id="part-4-demo-4">PART 4: 要素标绘(点、线、面,符号化/静态动态) <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo4.html">Demo 4 </a><a class="headerlink" href="#part-4-demo-4" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/28/161dcf0290ac287b?w=964&amp;h=480&amp;f=gif&amp;s=3275194" /></p>
<ul>
<li>库引用 如上 Demo 1</li>
<li>画一个圆</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 画一个circle</span>
<span class="kr">const</span> <span class="nx">circle</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">circle</span><span class="p">([</span><span class="mf">36.52</span><span class="p">,</span> <span class="mf">120.31</span><span class="p">],</span> <span class="p">{</span>
  <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;green&#39;</span><span class="p">,</span> <span class="c1">//描边色</span>
  <span class="nx">fillColor</span><span class="o">:</span> <span class="s1">&#39;#f03&#39;</span><span class="p">,</span>  <span class="c1">//填充色</span>
  <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.5</span><span class="p">,</span> <span class="c1">//透明度</span>
  <span class="nx">radius</span><span class="o">:</span> <span class="mi">10000</span> <span class="c1">//半径,单位米</span>
<span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="c1">// 绑定一个提示标签</span>
<span class="nx">circle</span><span class="p">.</span><span class="nx">bindTooltip</span><span class="p">(</span><span class="s1">&#39;我是个圆&#39;</span><span class="p">);</span>
</pre></div>

<ul>
<li>Maker 及自定义 Maker</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 做一个maker</span>
<span class="kr">const</span> <span class="nx">marker</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">marker</span><span class="p">([</span><span class="mf">36.52</span><span class="p">,</span> <span class="mf">120.31</span><span class="p">]).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="c1">// 绑定一个提示标签</span>
<span class="nx">marker</span><span class="p">.</span><span class="nx">bindTooltip</span><span class="p">(</span><span class="s1">&#39;这是个Marker&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">direction</span><span class="o">:</span> <span class="s1">&#39;left&#39;</span> <span class="p">}).</span><span class="nx">openTooltip</span><span class="p">();</span>


<span class="c1">//自定义一个maker</span>
<span class="kr">const</span> <span class="nx">greenIcon</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">icon</span><span class="p">({</span>
  <span class="nx">iconUrl</span><span class="o">:</span> <span class="s1">&#39;./icon/logo.png&#39;</span><span class="p">,</span>
  <span class="nx">iconSize</span><span class="o">:</span> <span class="p">[</span><span class="mi">300</span><span class="p">,</span> <span class="mi">79</span><span class="p">],</span> <span class="c1">// size of the icon</span>
  <span class="nx">popupAnchor</span><span class="o">:</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">10</span><span class="p">]</span> <span class="c1">// point from which the popup should open relative to the iconAnchor</span>
<span class="p">});</span>

<span class="kr">const</span> <span class="nx">oMarker</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">marker</span><span class="p">([</span><span class="mf">36.52</span><span class="p">,</span> <span class="mf">124.31</span><span class="p">],</span> <span class="p">{</span> <span class="nx">icon</span><span class="o">:</span> <span class="nx">greenIcon</span> <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="c1">// 绑定一个提示标签</span>
<span class="nx">oMarker</span><span class="p">.</span><span class="nx">bindTooltip</span><span class="p">(</span><span class="s1">&#39;这是个自定义Marker&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">direction</span><span class="o">:</span> <span class="s1">&#39;left&#39;</span><span class="p">,</span> <span class="nx">offset</span><span class="o">:</span> <span class="p">[</span><span class="o">-</span><span class="mi">150</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> <span class="p">});</span>
</pre></div>

<ul>
<li>画一根线</li>
</ul>
<div class="codehilite"><pre><span class="c1">//画一根线</span>
<span class="kr">const</span> <span class="nx">polyline</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">polyline</span><span class="p">([[</span><span class="mf">45.51</span><span class="p">,</span> <span class="o">-</span><span class="mf">122.68</span><span class="p">],</span> <span class="p">[</span><span class="mf">37.77</span><span class="p">,</span> <span class="o">-</span><span class="mf">122.43</span><span class="p">],</span> <span class="p">[</span><span class="mf">34.04</span><span class="p">,</span> <span class="o">-</span><span class="mf">118.2</span><span class="p">]],</span> <span class="p">{</span> <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;red&#39;</span> <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="c1">// 飞到这个线的位置</span>
<span class="c1">// map.fitBounds(polyline.getBounds());</span>
</pre></div>

<ul>
<li>画一个多边形</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 画一个polygon</span>
<span class="kr">const</span> <span class="nx">polygon</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">polygon</span><span class="p">([</span>
  <span class="p">[[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.05</span><span class="p">],</span> <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">109.03</span><span class="p">],</span> <span class="p">[</span><span class="mi">41</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.05</span><span class="p">],</span> <span class="p">[</span><span class="mi">37</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.04</span><span class="p">]],</span> <span class="c1">// outer ring</span>
  <span class="p">[[</span><span class="mf">37.29</span><span class="p">,</span> <span class="o">-</span><span class="mf">108.58</span><span class="p">],</span> <span class="p">[</span><span class="mf">40.71</span><span class="p">,</span> <span class="o">-</span><span class="mf">108.58</span><span class="p">],</span> <span class="p">[</span><span class="mf">40.71</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.50</span><span class="p">],</span> <span class="p">[</span><span class="mf">37.29</span><span class="p">,</span> <span class="o">-</span><span class="mf">102.50</span><span class="p">]]</span> <span class="c1">// hole</span>
<span class="p">],</span> <span class="p">{</span>
    <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;green&#39;</span><span class="p">,</span>
    <span class="nx">fillColor</span><span class="o">:</span> <span class="s1">&#39;#f03&#39;</span><span class="p">,</span>
    <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.5</span>
  <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="c1">// 绑定一个提示标签</span>
<span class="nx">polygon</span><span class="p">.</span><span class="nx">bindTooltip</span><span class="p">(</span><span class="s1">&#39;this is 个多边形&#39;</span><span class="p">);</span>
<span class="c1">// 飞到这个多边形的位置</span>
<span class="c1">// map.fitBounds(polygon.getBounds());</span>
</pre></div>

<h3 id="part-5-popup-demo-5">PART 5: 信息窗口(入口、Popup、定制) <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo5.html">Demo 5 </a><a class="headerlink" href="#part-5-popup-demo-5" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/2/28/161dd0f8edbe36e5?w=964&amp;h=480&amp;f=gif&amp;s=3360015" /></p>
<ul>
<li>库引用 如上 Demo 1</li>
<li>画一个 circle 并绑定一个 Popup</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 画一个circle</span>
<span class="kr">const</span> <span class="nx">circle</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">circle</span><span class="p">([</span><span class="mf">36.92</span><span class="p">,</span> <span class="mf">121.31</span><span class="p">],</span> <span class="p">{</span>
 <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;green&#39;</span><span class="p">,</span> <span class="c1">//描边色</span>
 <span class="nx">fillColor</span><span class="o">:</span> <span class="s1">&#39;#f03&#39;</span><span class="p">,</span>  <span class="c1">//填充色</span>
 <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.5</span><span class="p">,</span> <span class="c1">//透明度</span>
 <span class="nx">radius</span><span class="o">:</span> <span class="mi">10000</span> <span class="c1">//半径,单位米</span>
<span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>

<span class="c1">// 绑定一个弹窗</span>
<span class="nx">circle</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="s1">&#39;我是个圆&#39;</span><span class="p">);</span>
</pre></div>

<ul>
<li>定位一个 marker,绑定一个自定义 Popup</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 定位一个maker</span>
<span class="kr">const</span> <span class="nx">marker</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">marker</span><span class="p">([</span><span class="mf">36.52</span><span class="p">,</span> <span class="mf">120.31</span><span class="p">]).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>

<span class="c1">//maker上自定义一个popup</span>
<span class="kr">const</span> <span class="nx">html</span> <span class="o">=</span> <span class="s1">&#39;&lt;p&gt;Hello world!&lt;br /&gt;This is a nice popup.&lt;/p&gt;&#39;</span><span class="p">;</span>

<span class="kr">const</span> <span class="nx">popup</span> <span class="o">=</span> <span class="nx">marker</span><span class="p">.</span><span class="nx">bindPopup</span><span class="p">(</span><span class="nx">html</span><span class="p">,</span> <span class="p">{</span> <span class="nx">maxHeight</span><span class="o">:</span> <span class="mi">250</span><span class="p">,</span> <span class="nx">maxWidth</span><span class="o">:</span> <span class="mi">490</span><span class="p">,</span> <span class="nx">className</span><span class="o">:</span> <span class="s1">&#39;content&#39;</span><span class="p">,</span> <span class="nx">offset</span><span class="o">:</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]</span> <span class="p">}).</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;popupopen&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">params</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">params</span><span class="p">)</span>
<span class="p">});</span>
</pre></div>

<ul>
<li>实现动态改变 Popup 的内容</li>
</ul>
<div class="codehilite"><pre><span class="kr">const</span> <span class="nx">mypop</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">popup</span><span class="p">();</span>

<span class="nx">map</span><span class="p">.</span><span class="nx">on</span><span class="p">(</span><span class="s1">&#39;click&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
  <span class="nx">mypop</span><span class="p">.</span><span class="nx">setLatLng</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">latlng</span><span class="p">)</span>
    <span class="p">.</span><span class="nx">setContent</span><span class="p">(</span><span class="s1">&#39;你临幸了这个点:&lt;br&gt;&#39;</span> <span class="o">+</span> <span class="nx">e</span><span class="p">.</span><span class="nx">latlng</span><span class="p">.</span><span class="nx">toString</span><span class="p">())</span>
    <span class="p">.</span><span class="nx">openOn</span><span class="p">(</span><span class="nx">map</span><span class="p">);</span>
<span class="p">});</span>
</pre></div>

<h3 id="part-6-geojson-demo-6">PART 6: geojson 数据绘制边界(坐标转换、渲染) <a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/demo6.html">Demo 6 </a><a class="headerlink" href="#part-6-geojson-demo-6" title="Permanent link"></a></h3>
<p><img alt="" src="https://user-gold-cdn.xitu.io/2018/3/1/161dd3b18402adcc?w=964&amp;h=480&amp;f=gif&amp;s=5224505" /></p>
<ul>
<li>
<p>库引用 如上 Demo 1</p>
</li>
<li>
<p>获得 geojson 并处理数据</p>
</li>
</ul>
<div class="codehilite"><pre><span class="c1">// 请求geojson并处理数据</span>
<span class="kr">const</span> <span class="nx">population</span> <span class="o">=</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="nx">$</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s2">&quot;./js/geojson.json&quot;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">response</span><span class="p">)</span> <span class="p">{</span>
        <span class="kr">const</span> <span class="nx">poplData</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">data</span>
        <span class="kr">const</span> <span class="nx">PolygonsCenter</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">geopoint</span>
        <span class="nx">drawPolygons</span><span class="p">(</span><span class="nx">poplData</span><span class="p">,</span> <span class="nx">PolygonsCenter</span><span class="p">)</span>
    <span class="p">});</span>
<span class="p">}</span>
</pre></div>

<blockquote>
<p>模拟后台返回的数据<a href="https://github.com/liuvigongzuoshi/Leaflet_Demo/blob/master/js/geojson.json">geojson</a></p>
</blockquote>
<ul>
<li>绘制边界并添加图例</li>
</ul>
<div class="codehilite"><pre><span class="kd">let</span> <span class="nx">oPolygon_VilPop</span> <span class="o">=</span> <span class="p">[];</span>

<span class="kr">const</span> <span class="nx">legend</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">control</span><span class="p">({</span>
    <span class="nx">position</span><span class="o">:</span> <span class="s1">&#39;bottomright&#39;</span>
 <span class="p">});</span>

<span class="kr">const</span> <span class="nx">drawPolygons</span> <span class="o">=</span> <span class="p">(</span><span class="nx">poplData</span><span class="p">,</span> <span class="nx">PolygonsCenter</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="k">for</span> <span class="p">(</span><span class="kr">const</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">poplData</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">geoJson</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">geoJson</span><span class="p">)</span>
        <span class="nx">oPolygon_VilPop</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">geoJSON</span><span class="p">(</span><span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">geoJson</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">style</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
                <span class="k">return</span> <span class="p">{</span>
                    <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;white&#39;</span><span class="p">,</span>
                    <span class="nx">fillColor</span><span class="o">:</span> <span class="nx">getBgColor</span><span class="p">(</span><span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">population</span><span class="p">),</span> <span class="c1">//获取边界的填充色</span>
                    <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.6</span><span class="p">,</span>
                    <span class="nx">weight</span><span class="o">:</span> <span class="mi">3</span><span class="p">,</span>
                    <span class="nx">dashArray</span><span class="o">:</span> <span class="s1">&#39;10&#39;</span>
                <span class="p">};</span>
            <span class="p">}</span>
        <span class="p">}).</span><span class="nx">bindTooltip</span><span class="p">(</span><span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">villageName</span> <span class="o">+</span> <span class="s1">&#39;&lt;br&gt;&lt;br&gt;人口&#39;</span> <span class="o">+</span> <span class="nx">poplData</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">population</span> <span class="o">+</span> <span class="s1">&#39;人&#39;</span><span class="p">,</span> <span class="p">{</span>
            <span class="nx">direction</span><span class="o">:</span> <span class="s1">&#39;top&#39;</span>
        <span class="p">}).</span><span class="nx">on</span><span class="p">({</span>
            <span class="nx">mouseover</span><span class="o">:</span> <span class="nx">highlight</span><span class="p">,</span> <span class="c1">//鼠标移动上去高亮</span>
            <span class="nx">mouseout</span><span class="o">:</span> <span class="nx">resetHighlight</span><span class="p">,</span> <span class="c1">//鼠标移出恢复原样式</span>
            <span class="nx">click</span><span class="o">:</span> <span class="nx">zoomTo</span> <span class="c1">//点击最大化</span>
        <span class="p">}).</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">);</span>
    <span class="p">}</span>

    <span class="c1">// 添加图例</span>
    <span class="nx">legend</span><span class="p">.</span><span class="nx">onAdd</span> <span class="o">=</span> <span class="nx">legendHtml</span><span class="p">;</span>
    <span class="nx">legend</span><span class="p">.</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">);</span>

    <span class="c1">// 定位到该界限的中心位置</span>
    <span class="nx">oMap</span><span class="p">.</span><span class="nx">flyToBounds</span><span class="p">(</span><span class="nx">PolygonsCenter</span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">// 添加图例</span>
<span class="nx">legend</span><span class="p">.</span><span class="nx">onAdd</span> <span class="o">=</span> <span class="nx">legendHtml</span><span class="p">;</span>
<span class="nx">legend</span><span class="p">.</span><span class="nx">addTo</span><span class="p">(</span><span class="nx">oMap</span><span class="p">);</span>

<span class="c1">// 定位到该界限的中心位置</span>
<span class="nx">oMap</span><span class="p">.</span><span class="nx">flyToBounds</span><span class="p">(</span><span class="nx">PolygonsCenter</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>

<ul>
<li>返回边界的填充色及图列的样式</li>
</ul>
<div class="codehilite"><pre><span class="kr">const</span> <span class="nx">getBgColor</span> <span class="o">=</span> <span class="p">(</span><span class="nx">d</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="k">return</span> <span class="nx">d</span> <span class="o">&gt;</span> <span class="mi">400</span> <span class="o">?</span> <span class="s1">&#39;#800026&#39;</span> <span class="o">:</span> <span class="nx">d</span> <span class="o">&gt;</span> <span class="mi">300</span> <span class="o">?</span> <span class="s1">&#39;#BD0026&#39;</span> <span class="o">:</span> <span class="nx">d</span> <span class="o">&gt;</span> <span class="mi">200</span> <span class="o">?</span> <span class="s1">&#39;#FC4E2A&#39;</span> <span class="o">:</span> <span class="nx">d</span> <span class="o">&gt;</span> <span class="mi">100</span> <span class="o">?</span> <span class="s1">&#39;#FD8D3C&#39;</span> <span class="o">:</span> <span class="nx">d</span> <span class="o">&gt;</span> <span class="mi">50</span> <span class="o">?</span> <span class="s1">&#39;#FED976&#39;</span> <span class="o">:</span> <span class="s1">&#39;#FFEDA0&#39;</span><span class="p">;</span>
<span class="p">}</span>

<span class="kr">const</span> <span class="nx">legendHtml</span> <span class="o">=</span> <span class="p">(</span><span class="nx">map</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="kd">let</span> <span class="nx">div</span> <span class="o">=</span> <span class="nx">L</span><span class="p">.</span><span class="nx">DomUtil</span><span class="p">.</span><span class="nx">create</span><span class="p">(</span><span class="s1">&#39;div&#39;</span><span class="p">,</span> <span class="s1">&#39;legend locateVP_legend&#39;</span><span class="p">),</span>
        <span class="nx">grades</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">50</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">200</span><span class="p">,</span> <span class="mi">400</span><span class="p">],</span>
        <span class="nx">labels</span> <span class="o">=</span> <span class="p">[],</span>
        <span class="nx">from</span><span class="p">,</span> <span class="nx">to</span><span class="p">;</span>
    <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">grades</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">from</span> <span class="o">=</span> <span class="nx">grades</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
        <span class="nx">to</span> <span class="o">=</span> <span class="nx">grades</span><span class="p">[</span><span class="nx">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">];</span>
        <span class="nx">labels</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span>
            <span class="s1">&#39;&lt;i style=&quot;background:&#39;</span> <span class="o">+</span> <span class="nx">getBgColor</span><span class="p">(</span><span class="nx">from</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;&quot;&gt;&lt;/i&gt; &#39;</span> <span class="o">+</span>
            <span class="nx">from</span> <span class="o">+</span> <span class="p">(</span><span class="nx">to</span> <span class="o">?</span> <span class="s1">&#39; &amp;sim; &#39;</span> <span class="o">+</span> <span class="nx">to</span> <span class="o">+</span> <span class="s1">&#39;人&#39;</span> <span class="o">:</span> <span class="s1">&#39;以上&#39;</span><span class="p">));</span>
    <span class="p">}</span>
    <span class="nx">div</span><span class="p">.</span><span class="nx">innerHTML</span> <span class="o">=</span> <span class="nx">labels</span><span class="p">.</span><span class="nx">join</span><span class="p">(</span><span class="s1">&#39;&lt;br&gt;&#39;</span><span class="p">);</span>
    <span class="k">return</span> <span class="nx">div</span><span class="p">;</span>
    <span class="p">};</span>
</pre></div>

<ul>
<li>鼠标移动上去的事件、鼠标移出的事件、发生点击的事件</li>
</ul>
<div class="codehilite"><pre><span class="kr">const</span> <span class="nx">highlight</span> <span class="o">=</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="kd">let</span> <span class="nx">layer</span> <span class="o">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">;</span>
    <span class="nx">layer</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">({</span>
        <span class="nx">weight</span><span class="o">:</span> <span class="mi">6</span><span class="p">,</span>
        <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;#fff&#39;</span><span class="p">,</span>
        <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.9</span><span class="p">,</span>
        <span class="nx">dashArray</span><span class="o">:</span> <span class="s1">&#39;0&#39;</span>
    <span class="p">})</span>
<span class="p">}</span>

<span class="kr">const</span> <span class="nx">resetHighlight</span> <span class="o">=</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="kd">let</span> <span class="nx">layer</span> <span class="o">=</span> <span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">;</span>
    <span class="nx">layer</span><span class="p">.</span><span class="nx">setStyle</span><span class="p">({</span>
        <span class="nx">color</span><span class="o">:</span> <span class="s1">&#39;white&#39;</span><span class="p">,</span>
        <span class="nx">weight</span><span class="o">:</span> <span class="mi">3</span><span class="p">,</span>
        <span class="nx">fillOpacity</span><span class="o">:</span> <span class="mf">0.6</span><span class="p">,</span>
        <span class="nx">dashArray</span><span class="o">:</span> <span class="s1">&#39;10&#39;</span>
    <span class="p">})</span>
<span class="p">}</span>

<span class="kr">const</span> <span class="nx">zoomTo</span> <span class="o">=</span> <span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
    <span class="nx">oMap</span><span class="p">.</span><span class="nx">fitBounds</span><span class="p">(</span><span class="nx">e</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">());</span>
<span class="p">}</span>
</pre></div>

<h3 id="_1">写在后面<a class="headerlink" href="#_1" title="Permanent link"></a></h3>
<h4 id="_2">国内常用地图服务资源加载插件<a class="headerlink" href="#_2" title="Permanent link"></a></h4>
<blockquote>
<p>Leaflet.ChineseTmsProviders <a href="https://github.com/htoooth/Leaflet.ChineseTmsProviders">Provider for Chinese Tms Service</a></p>
</blockquote>
<ul>
<li>
<p>Leaflet 调用国内各种地图的功能十分复杂,幸好有 leaflet.ChineseTmsProviders 这个插件,这四种地图直接就可以加载进来,十分方便。</p>
</li>
<li>
<p>使用方法很简单可点击上面链接去 GitHub 看使用说明,或拉<a href="https://github.com/liuvigongzuoshi/WebGIS-for-learnning/tree/master/Leaflet.ChineseTmsProviders_Demo">这个 demo</a>下来来瞧一瞧代码。</p>
</li>
</ul>
<h4 id="marker">优化 marker 相关的插件<a class="headerlink" href="#marker" title="Permanent link"></a></h4>
<ul>
<li>
<p>提供了丰富多彩的图标 <a href="https://github.com/lvoogdt/Leaflet.awesome-markers">Leaflet.awesome-markers</a>, See the <a href="http://jsfiddle.net/VPzu4/92/">demo map</a></p>
</li>
<li>
<p>强大的集聚插件 <a href="https://github.com/Leaflet/Leaflet.markercluster">Leaflet.markercluster</a>, See the <a href="https://leaflet.github.io/Leaflet.markercluster/example/marker-clustering-realworld.388.html">demo map</a></p>
</li>
<li>
<p>优化的 label <a href="https://github.com/Leaflet/Leaflet.label">Leaflet.label</a>, See the <a href="http://leaflet.github.io/Leaflet.label/">demo map</a></p>
</li>
<li>
<p>优化重叠在一起的 markers <a href="https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet">OverlappingMarkerSpiderfier-Leaflet</a>, See the <a href="http://jawj.github.io/OverlappingMarkerSpiderfier-Leaflet/demo.html">demo map</a></p>
</li>
<li>
<p>优化在边框上显示不在当前视野中的 marker <a href="https://github.com/ubergesundheit/Leaflet.EdgeMarker">Leaflet.EdgeMarker</a>, See the <a href="http://ubergesundheit.github.io/Leaflet.EdgeMarker/">demo map</a></p>
</li>
</ul>
<h4 id="_3">模块化开发的加载包注意的问题<a class="headerlink" href="#_3" title="Permanent link"></a></h4>
<ul>
<li>引 leaflet 包的时候不要忘记引用包里的 css <code>import 'leaflet/dist/leaflet.css';</code></li>
</ul>
<h4 id="leaflet-esri-leaflet-lesritiledmaplayer-arcgis-uncaught-referenceerror-proj4-is-not-defined">关于 Leaflet 和 esri-leaflet 一起使用 L.esri.TiledMapLayer 加载 ArcGIS 服务切片底图时,控制台打印报错 <code>Uncaught ReferenceError: proj4 is not defined</code><a class="headerlink" href="#leaflet-esri-leaflet-lesritiledmaplayer-arcgis-uncaught-referenceerror-proj4-is-not-defined" title="Permanent link"></a></h4>
<ul>
<li>查看了下源码 <code>if (!proj4) { warn('L.esri.TiledMapLayer is using a non-mercator spatial reference. Support may be available through Proj4Leaflet http://esri.github.io/esri-leaflet/examples/non-mercator-projection.html');}</code> 问题就出在这里,esri-leaflet 里的一个插件 proj4leaflet 依赖<a href="https://github.com/proj4js/proj4js">proj4</a>,所以需要手动引入 proj4 这个包。</li>
<li>这个 GitHub 上面的提问及回答 <a href="https://github.com/Esri/esri-leaflet/issues/1019">Github esri-leaflet Issues</a></li>
<li>如果你是模块化开发,需要再<code>npm i proj4</code> 然后再引入进来好了 <code>import * as proj4 from 'proj4'; window['proj4'] = proj4;</code></li>
<li>如果你是常规开发,直接添加一个 script 标签引用 CDN 资源上托管的<a href="https://cdnjs.com/libraries/proj4js">Proj4js</a>就是了 <code>&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.4/proj4-src.js"&gt;&lt;/script&gt;</code></li>
</ul>
<h4 id="leaflet">Leaflet 学习资料整理<a class="headerlink" href="#leaflet" title="Permanent link"></a></h4>
<ul>
<li><a href="https://github.com/liuvigongzuoshi/summarize-web-resources/blob/master/leaflet/leaflet-develop-guide.md">Leaflet-Develop-Guide 🍃</a> -开发文档及常用插件小结</li>
</ul>
<h3 id="_4">参考<a class="headerlink" href="#_4" title="Permanent link"></a></h3>
<ul>
<li><a href="http://blog.csdn.net/liyuanxiang1984/article/details/54601985">GIS 制图乐园 esri-leaflet 入门教程(1)-leaflet 介绍</a></li>
<li><a href="https://www.jianshu.com/p/3b3efa92dd6d">Awesome GIS(GIS Tech Stack 技术栈)</a></li>
<li><a href="http://malagis.com/learning-leaflet-js-note.html">麻辣 GIS Leaflet 学习笔记</a></li>
</ul>
<blockquote>
<p>持续更新中 原文地址: <a href="https://juejin.im/post/5a658614f265da3e3f4cce0e">https://juejin.im/post/5a658614f265da3e3f4cce0e</a></p>
</blockquote></article></body></html>
MIT License Copyright (c) 2018 liuvigongzuoshi Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

leaflet的学习,样例集,Demo 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/bai-lihua/leaflet-book.git
git@gitee.com:bai-lihua/leaflet-book.git
bai-lihua
leaflet-book
leaflet-book
master

搜索帮助