In many Internet of Things (IoT) applications, messages may need to be disseminated to some specific objects or nodes using multicast transmissions. In the literature, the multicast routing protocol can be divided into non-geographic-based and geographic-based. Since devices’ locations can be roughly derived by localization schemes or by GPS devices, geographic-based multicast routing protocols are preferred since they can induce less control packet overheads. However, we observe that existing geographic-based multicast routing schemes have the following two drawbacks. First, network nodes need a lot of computations to decide directions of sending multicast packets. Second, when a network has some holes or voids, the constructed multicast paths will be long, and in some cases, the paths may contain loops. In this work, we proposed a lightweight and distributed geographic multicast routing protocol to solve the above problems. Our scheme contains three phases. First, the first phase selects intermediate nodes to reach multicast destinations. Then, the second phase removes loops and trims routes constructed in the first phase. Finally, the last phase checks if the selected multicast links can further be merged. The simulation results indicate that the proposed scheme can effectively reduce transmission links and shorten path lengths in the constructed multicast paths. To demonstrate the proposed scheme can be applied to IoT applications, we also implement the designed scheme in ZigBee-compliant platforms. The experiment results show that the proposed scheme can also help to reduce multicast latency.